Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php和mysql不工作的登录页面_Php_Mysql_Sql_Login - Fatal编程技术网

php和mysql不工作的登录页面

php和mysql不工作的登录页面,php,mysql,sql,login,Php,Mysql,Sql,Login,我正在尝试建立一个基于mysql数据库的登录页面,但它不起作用。使用下面的代码,我总是得到一个空页面,而不是重定向。和echo$result_行['password']不返回任何内容 <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $username = $_POST['username']; $passwort = $_POST['passwort'];

我正在尝试建立一个基于mysql数据库的登录页面,但它不起作用。使用下面的代码,我总是得到一个空页面,而不是重定向。和
echo$result_行['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/">';
       }
      }
?>

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

<?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");
           }
          }
    ?>
header('Location: http://www.yourwebsite.com/konto_show.php');

应该获取
mysql\u query()
函数的结果,以便在php中使用。您不能这样使用它。 您可以使用:

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

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

顺便说一句,mysql扩展已被弃用,将来将被删除:改用mysqli或PDO

您正在使用
meta
标记进行重定向,但如果这是整个脚本,它就不是格式良好的HTML文档的一部分(唯一的其他输出来自
echo$result\u行['password']所以我想这就是它不起作用的原因

尝试使用301 HTTP头,可能类似以下内容:

<?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");
           }
          }
    ?>
header('Location: http://www.yourwebsite.com/konto_show.php');

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

在文档中,写着MySQL\u查询返回一个资源。 必须使用fetch函数才能获得结果

在本例中,您需要验证函数返回的“int”是否为0或更大。 然后使用mysql\u fetch\u行 Doc:php.net/mysql\u fetch\u行

它将把结果放入一个数组中

result_row = mysql_fetch_row($result);
然后比较你的价值:

if (result_row[0])
...

你可以这样做:

$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/">';
   }
}
$result=mysql\u查询(“从konto中选择*用户名=“$username”限制1”);
$row=mysql\u num\u rows($result);
$result\u row=mysql\u fetch\u数组($result);
如果($row==1&&$passwort==$result\u row['password']){
$\会话['angemeldet']=true;
$\会话['username']=$username;
$_SESSION['name']=$result_行['name'];
回声';
}
}

请使用mysqli或pdo,因此请不要存储纯文本密码。这是与第一个评论者的结合,是你能对你的用户做的最糟糕的事情。巨人?使用过时的
mysql\u查询
?纯文本密码?不要以这种方式实现用户身份验证,否则您将陷入严重的麻烦。你是从哪里学会这样做的?最好的方法是使用具有用户身份验证模块的,而不是编写自己的。否。这样的代码有一种方式可以在您不注意的情况下成为最终版本。认真地你在这里犯了太多的错误,他们也不是小错误。你为什么要编写自己的身份验证系统,而实际上有数百个系统可以正常工作?很抱歉听起来这么严厉,但这样的代码会让人们陷入严重的麻烦。@NathanMaier这是胡说八道,你知道的。在我的职业生涯中,我已经看到了太多的临时解决方案,对不起。最好的答案是从PDO开始。@tadman但这并不能解决眼前的问题。PDO是一个很好的工具,但它不是唯一的工具。如果没有任何参考资料、入门指南或建议,您的评论将毫无意义。在开发这样的新代码时,PDO是最低限度的。在已经实现的地方,最好使用适当的方法。有助于避免这样的陷阱。@Nathan Maier:你试过吗?正如我已经说过的,我用$result\u row=mysql\u fetch\u数组($result)获取它;echo$result_行['password'];我尝试了$row=mysql\u fetch\u object($result);echo$行->密码;太多了,但是没有difference@Nathan梅尔:你试过密码吗?您得到了什么输出或错误?是否使用给定的用户名在sql server中运行此查询?选择*FROM konto WHERE username='$username'LIMIT 1您应该填写locationTrue的完整URI,尽管规范中所说的内容将来可能会改变,但我会调整答案,因为我们都被迫生活在现在……:'(