我正在尝试使用HTML,PHP和MYSQL创建表单。我已经完成了大部分代码,但每当我向我的数据库发送POST以检查用户名/密码是否在DATABASE中时它会将我发送到空白页面。我不完全确定为什么。有什么建议吗?
</head>
<body>
<section id="loginBox">
<h2>Login</h2>
<form method="post" class="minimal" action="connect.php">
<label for="username">
Username:
<input type="text" name="username" id="username"
placeholder="Username must be between 8 and 20 characters" required="required" />
</label>
<label for="password">
Password:
<input type="password" name="password" id="password" required="required" />
</label>
<input type="submit" class="btn-minimal" value="Log-in">Sign in</input>
</form>
</section>
</body>
</html>
然后这是php代码我认为我的SignIn方法出错了
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'secure_login');
define('DB_USER', 'blahblah');
define('DB_PASSWORD', 'blah');
$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD)
or die("Failed to connect to MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Failed
to connect to MySQL: " . mysql_error());
/* $ID = $_POST['user'];
$Password = $_POST['pass'];
*/
function SignIn(){
session_start();
if(!empty($_POST['user'])){
$query = mysql_query("SELECT * FROM UserName where = '$_POST[user]'
AND pass = '$_POST[pass]'") or die(mysql_error());
$row = mysql_fetch_array($query) or die(mysql_error());
if(!empty($row['userName']) AND !empty($row['pass'])){
$_SESSION['userName'] = $row['pass'];
header("Location: index.html");
echo "Sucessfuly login";
}
else{
echo "sorry failed";
}
}
}
if(isset($_POST['submit'])){
SignIn();
}
?>
答案 0 :(得分:0)
你做这件事的方式存在一些基本问题。但是,正如他们所说的那样。空白页表示某些内容失败,但未输出到浏览器。
即使您有or die(mysql_error()
,也可能没有看到它,因为未启用错误报告。将error_reporting(E_ALL);
添加到PHP脚本的顶部,它应该显示问题所在。
答案 1 :(得分:-1)
你的问题很可能在这里:
$query = mysql_query("SELECT * FROM UserName where = '$_POST[user]'
AND pass = '$_POST[pass]'") or die(mysql_error());
应该是:
$sql = "SELECT * FROM users_table WHERE UserName = \"".$_POST['user']."\" AND pass = \"".$_POST['pass']."\"";
您的密码不应存储为纯文字;你需要以某种形式散列它们。这是一个建议,但强烈而强烈的建议。在本例中你应该比我们任何一个人都更加小心,通过检查魔术引号等来确保SQL注入不是问题。