php和mysql不工作的登录页面
我正在尝试建立一个基于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'];
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,尽管规范中所说的内容将来可能会改变,但我会调整答案,因为我们都被迫生活在现在……:'(