2014-03-06 35 views
-2

这段代码总是去“index.php?err = 1”,我不知道为什么。不能得到这个PHP代码工作

'acceso_db.php' 是数据库连接(这是确定)

$email = mysql_real_escape_string($_POST['Nick']); 
     $usuario_clave = mysql_real_escape_string($_POST['pas']); 
     $usuario_clave = sha1($usuario_clave); //la clave se comprueba en SHA1 

     // comprobamos que los datos ingresados en el formulario coincidan con los de la BD 
     include('acceso_db.php'); 
     $sql = "SELECT * FROM usuarios WHERE email='$email' AND clave='$usuario_clave'"; 
     $result = mysql_query($sql)or die ("error en el select."); 
     if (false === $result) { 
      echo mysql_error(); 
     } 
     else if($row = mysql_fetch_array($result)) { 
      if($_POST['recordar']){ 
       mt_srand (time()); 
       $auth = mt_rand(1000000,999999999); 
       $sql="UPDATE usuarios set Auth='$auth' WHERE email='$email' AND clave='$usuario_clave'"; 
       $result = mysql_query($sql) or die (mysql_error()); 
       setcookie("id_usuario", $email, time()+(60*60*24*365)); 
       setcookie("galleta", $auth, time()+(60*60*24*365)); 
      } 
      $_SESSION['email'] = $row["email"]; 
      mysql_free_result($result); 
      header("Location: index.php"); 
     }else { 
      mysql_free_result($result); 
      header("Location: index.php?err=1"); 

     } 
+0

你检查过查询是否返回任何值吗? – anurupr

+1

只需检查你的sql查询,并通过phpMyAdmin直接在你的数据库中执行它。它工作吗? – Marcel

+1

该查询在phpmyadmin中正常。这就像mysql_fetch_array不工作... – kbronctjr

回答

0

你有一些问题,你的代码..试试这个编辑...

$email = mysql_real_escape_string($_POST['Nick']); 
$usuario_clave = mysql_real_escape_string($_POST['pas']); 
$usuario_clave = sha1($usuario_clave); //la clave se comprueba en SHA1 
// comprobamos que los datos ingresados en el formulario coincidan con los de la BD 
include('acceso_db.php'); 
$sql = mysql_query("SELECT * FROM usuarios WHERE email='$email' AND clave='$usuario_clave'"); 
if (!$sql) 
{ 
    echo mysql_error(); 
    header("Location: index.php?err=1"); 
    exit; 
} 
else 
{ 
    while($row = mysql_fetch_array($sql)) 
    { 
     if ($_POST['recordar']) 
     { 
      mt_srand(time()); 
      $auth = mt_rand(1000000, 999999999); 
      $sql2 = mysql_query("UPDATE usuarios set Auth='$auth' WHERE email='$email' AND clave='$usuario_clave'"); 
      if(!$sql2) 
      { 
      echo 'update query failed'; 
      exit; 
      } 
      setcookie("id_usuario", $email, time() + (60 * 60 * 24 * 365)); 
      setcookie("galleta", $auth, time() + (60 * 60 * 24 * 365)); 
     } 
     $_SESSION['email'] = $row["email"]; 
     mysql_free_result($sql); 
     header("Location: index.php"); 
    } 
} 

请让我知道如果你想要的任何进一步的指导。 ..

+0

现在这个,它只停留在登录cheking的.php文件,并且页面是空的 – kbronctjr

+0

哦对不起..请检查我的编辑再次..用$ sql **取代** $结果... –

+0

是啊,我看到,问题不断... – kbronctjr

0

OFC它。你总是重定向到这个网址。

header("Location: index.php?err=1"); 

它的固定和永不改变。代码做它应该做的。您应该将err=1替换为您实际想要在GET中使用的值。

+1

if $ row = mysql_fetch_array($ result)它的好不应该到“index.php”? 我没有登录代码 我做到了1年前,它正在工作... – kbronctjr

+2

btw不再使用mysql_ *函数。他们被标记为已弃用,并将在下一个主要的php版本中被删除。 – Marcel

+0

我想你的查询什么都不返回,所以'$ row'是空的或者是false。尝试'var_dump($ row)'并检查它的内容。 –

0

你可以尝试这样的,

$row = mysql_fetch_array($result); 

if (isset($row)) { 
    if ($_POST['recordar']) { 
     mt_srand(time()); 
     $auth = mt_rand(1000000, 999999999); 
     $sql = "UPDATE usuarios set Auth='$auth' WHERE email='$email' AND clave='$usuario_clave'"; 
     $result = mysql_query($sql) or die(mysql_error()); 
     setcookie("id_usuario", $email, time() + (60 * 60 * 24 * 365)); 
     setcookie("galleta", $auth, time() + (60 * 60 * 24 * 365)); 
    } 
    $_SESSION['email'] = $row["email"]; 
    mysql_free_result($result); 
    header("Location: index.php"); 
} else { 
    mysql_free_result($result); 
    header("Location: index.php?err=1"); 
} 
+0

谢谢,但仍然不起作用 – kbronctjr

+0

使用$ var_dump($ row);检查$ rows中是否存在值。 –