我的项目主要目的是提供用户身份验证并将其重定向到各自的Web服务中。首先,我创建了包含登录表单的HTML页面。因此,当用户输入他们的数据时,我从数据库中检索密码和电子邮件信息,如果输入的数据是正确的,那么我应该将他们重定向到另一个PHP页面。所以我的问题来了....我正在使用PHP标头将它们重定向到另一个页面,一切都很好用HTML和MySQL数据库,用户输入表单数据并访问他们的网页。但是如果用户试图回到原始页面,它将被重定向到标题中提到的页面!用户无法访问原始表单页面。我在HTML标签中使用了该功能。我没有在表单中提及任何操作。如果用户输入错误的电子邮件ID或错误的密码,则该函数会在同一表单页面中显示错误消息,但如果他输入正确的数据,则会将其定向到标题位置中的页面。因此,当用户希望返回到表单页面或在某些页面之后重新启动原始页面时,它将被重定向到标题位置。因此,当我删除标题位置并重新加载它时,我能够看到原始页面。任何人都可以帮我修改代码吗?
<?php
function check_username($eid_login,$pwd_login)
{
$servername="Localhost";
$username="root";
$password="2537@Nuka";
$dbname="Secure_Drive";
$conn=mysqli_connect($servername,$username,$password,$dbname);
if(!$conn)
{
#die("Couldn't to connect to database:".mysqli_connect_error());
}
else
{
#echo "Connected sucessfully to the database";
}
$sql="SELECT * FROM SignUp_Info WHERE Email_Id='$eid_login'";
$result=mysqli_query($conn_db_login,$sql);
if(mysqli_num_rows($result)>0)
{
while($row=mysqli_fetch_assoc($result))
{
$verify_login_pwd=$row["Password"];
if($pwd_login!=$verify_login_pwd)
{
$password_match="You entered wrong password";
echo "<p class=\"php\">".$password_match."</p>";
}
else
{
header('Location:sample.php');
}
}
}
else
{
$email_exits="Id does not exists";
echo "<p class=\"php\">".$email_exits."</p>";
}
}
?>
<html>
<head>
<title>
Login-Home
</title>
<link rel="stylesheet" type="text/css" href="css/login.css">
</head>
<body>
<header>
<div class="name">
<a href="#"><h1>Secure Drive</h1></a>
</div>
</header>
<main>
<div>
<center>
<form method="POST">
<fieldset class="formstyle">
<legend>Login</legend>
<div class="adjust">
<br><label class="labels">E-mail ID</label><br>
<input class="floattype" type="text" name="emailid_login" placeholder="E-mail Id" required><br>
<br><label class="labels">Password</label><br>
<input class="floattype" type="password" name="password_login" placeholder="Password" required><br>
<br><button type="submit" value="Login">Login</button>
</div>
</fieldset>
</form>
<?php
$eid_login=$_POST["emailid_login"];
$pwd_login=$_POST["password_login"];
check_username($eid_login,$pwd_login); ?>
<br><br><a class="link" href="signup.php">Click here to SignUp</a>
</center>
</div>
</main>
<footer>
<p>©2016 Secure Drive,Gryffindors Inc.</p>
</footer>
</body>
</html>
答案 0 :(得分:0)
你的问题中有很多事情我对你的问题有点失落。我想您要问的是如果表单已经提交,如何只运行表单处理代码。
您可以像这样检查请求方法:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$eid_login=$_POST["emailid_login"];
$pwd_login=$_POST["password_login"];
check_username($eid_login,$pwd_login); ?>
}
现在check_username
功能只能在表单提交时运行。
答案 1 :(得分:0)
您需要在每个页面的顶部提及session_start();
。
这是表单页面。
if(isset($_SESSION['login'])){
header('Location:sample.php');
}
将一个会话变量添加到while循环else部分。
if($pwd_login!=$verify_login_pwd)
{
$password_match="You entered wrong password";
echo "<p class=\"php\">".$password_match."</p>";
}
else
{
$_SESSION['log'] = $username;
header('Location:sample.php');
}
sample.php
页面
<?php
session_start();
if(!isset($_SESSION['login']){
header('Location:form.php');
}
?>
logout.php使用此
<?php
session_start();
if(session_destroy())
{
header("Location: form.php");
}
?>