登录页面与php和mysql无法正常工作

时间:2014-01-09 18:47:41

标签: php mysql sql login

我正在尝试基于mysql数据库构建登录页面,但它不起作用。使用下面的代码,我总是得到一个空页而不是重定向。并且echo $result_row['password'];没有返回任何内容。

<?php
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
      session_start();

      $username = $_POST['username'];
      $passwort = $_POST['passwort'];

      $hostname = $_SERVER['HTTP_HOST'];
      $path = dirname($_SERVER['PHP_SELF']);

      $mysqlhost = "localhost"; // MySQL-Host angeben
      $mysqluser = "***"; // MySQL-User angeben
      $mysqlpwd = "***"; // Passwort angeben

      $connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");

      $mysqldb="db2507004-bank"; // Gewuenschte Datenbank angeben
      mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

      $result = mysql_query("SELECT * FROM konto WHERE 'username' LIKE '$username' LIMIT 1") 
      or die(mysql_error());

      $result_row = mysql_fetch_array($result);

      echo $result_row['password'];

      // Benutzername und Passwort werden überprüft
      if ($passwort == $result_row['password']) {
       $_SESSION['angemeldet'] = true;
       $_SESSION['username'] = $username;
       $_SESSION['name'] =  $result_row['name'];

       echo '<meta http-equiv="Location" content="http://testserver.info.cm/konto_show.php/">';
       }
      }
?>

5 个答案:

答案 0 :(得分:2)

您没有获取结果。试试这样:

<?php
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
          session_start();

          $username = $_POST['username'];
          $passwort = $_POST['passwort'];

          $hostname = $_SERVER['HTTP_HOST'];
          $path = dirname($_SERVER['PHP_SELF']);

          $mysqlhost = "localhost"; // MySQL-Host angeben
          $mysqluser = "***"; // MySQL-User angeben
          $mysqlpwd = "***"; // Passwort angeben

          $connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");

          $mysqldb="db2507004-bank"; // Gewuenschte Datenbank angeben
          mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

          $result = mysql_query("SELECT * FROM konto WHERE username ='$username' LIMIT 1") 
          or die(mysql_error());
          $row = mysql_fetch_object($result);
          echo $row->password;

          // Benutzername und Passwort werden überprüft
          if ($passwort == $row->password) {
           $_SESSION['angemeldet'] = true;
           $_SESSION['username'] = $username;
           $_SESSION['name'] =  $row->name;

          header("Location http://testserver.info.cm/konto_show.php");
           }
          }
    ?>

答案 1 :(得分:2)

应该获取mysql_query()函数的结果以便在php中使用。你不能像那样使用它。 你可以使用:

mysql_fetch_array()

mysql_fetch_assoc()

mysql_fetch_object()

例如,您可以像这样使用它:

$query = "SELECT * FROM konto WHERE 'username' LIKE '$username' LIMIT 1";
$result = mysql_query($query);
while($row=  mysql_fetch_array($result)){
 echo $row[1];
}

AND,顺便说一下,不推荐使用mysql扩展,将来会删除:使用mysqli或PDO

答案 2 :(得分:2)

您正在使用meta标记进行重定向,但如果这是整个脚本,则它不是格式良好的HTML文档的一部分(唯一的其他输出来自echo $result_row['password']; ),所以我希望这是它无法正常工作的原因。

尝试使用301 HTTP标头,可能是这样的:

header('Location: http://www.yourwebsite.com/konto_show.php');

(另外,请注意SQL语句中的SQL注入漏洞。始终通过相关的MySQL转义函数运行用户输入。)

答案 3 :(得分:1)

在doc中,它写的是mysql_query返回一个资源。 你必须使用获取函数来获得结果。

在您的情况下,您要验证函数返回的“int”是否为0或更多。 然后使用mysql_fetch_row Doc:php.net/mysql_fetch_row

它会将结果放在一个数组中。

result_row = mysql_fetch_row($result);

然后比较你的价值:

if (result_row[0])
...

答案 4 :(得分:1)

我这样做:

$result = mysql_query("SELECT * FROM konto WHERE username ='$username' LIMIT 1") ;
$row = mysql_num_rows($result);
$result_row = mysql_fetch_array($result);
if($row==1 &&  $passwort == $result_row['password']){
   $_SESSION['angemeldet'] = true;
   $_SESSION['username'] = $username;
   $_SESSION['name'] =  $result_row['name'];

   echo '<meta http-equiv="Location" content="http://testserver.info.cm/konto_show.php/">';
   }
}