我正在尝试基于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/">';
}
}
?>
答案 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中使用。你不能像那样使用它。
你可以使用:
例如,您可以像这样使用它:
$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/">';
}
}