我有一个登录表单,如果用户名和密码不正确则会出错,如果成功则显示index.php。现在成功登录工作正常。但是,如果出现错误,则不显示该消息。只显示一个空白页面。
P.S。在访问页面之前,我如何强制页面通过登录页面?
我的connectivity.php代码:
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'list');
define('DB_USER','root');
define('DB_PASSWORD','****');
$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 userName = '$_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.php");
}
else
{
echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY...";
}
}
}
if(isset($_POST['submit']))
{
SignIn();
}
?>
答案 0 :(得分:0)
我已经解决了这个问题。在行:
$row = mysql_fetch_array($query) or die(mysql_error());
我删除了&#34;或者死了&#34;代码的一部分,因为当用户名或密码错误时,$ row没有任何显示,所以它终止,并且没有机会转到else语句。
代码正在运行!谢谢大家
答案 1 :(得分:-1)
这被认为是评论,但我的声誉很低。
在我回答你的问题之前,请不要使用mysql函数,因为它不再受支持。考虑切换到MYSQLI或PDO。此外,不要相信用户输入。意思是不要直接将表单中的字段值发布到数据库中,因为attcker可以通过添加有趣的javascripts或更糟糕的方式轻松利用它。
<?php
if (!empty($row['userName']) && ! empty($row['pass'])) {
$_SESSION['userName'] = $row['pass'];
header("Location: index.php");
} else {
$error[] = "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY...";
}
然后在表单中添加以下代码以显示错误
<?php
if (isset($error)) {
foreach ($error as $validationErrors) {
echo '<div class="alert alert-danger" align="center">' . $validationErrors . '</div>';
}
}
?>
仅供参考:您需要使用bootstrap来显示页面上的错误。我刚才补充说。如果它对您有用,请告诉我