Javascript 试图改变user=';管理员';密码=';管理员';使用php和注册页面
我有一个registrationPage.php文件,其中有一个表单,用于填写用户名和密码,我想使用login.php文件检查这些用户名和密码,如果字段为空或不正确(用户名和密码不是“Admin”),则返回并在标签(registrationPage.php中)上填写消息“Password或username are not correct”(密码或用户名不是“Admin”) 我的问题是,在我描述的一个案例中失败后,我无法更新registrationPage.php中的标签 这是我的registrationPage.php文件的摘录,其中包含登录表单:Javascript 试图改变user=';管理员';密码=';管理员';使用php和注册页面,javascript,php,html,Javascript,Php,Html,我有一个registrationPage.php文件,其中有一个表单,用于填写用户名和密码,我想使用login.php文件检查这些用户名和密码,如果字段为空或不正确(用户名和密码不是“Admin”),则返回并在标签(registrationPage.php中)上填写消息“Password或username are not correct”(密码或用户名不是“Admin”) 我的问题是,在我描述的一个案例中失败后,我无法更新registrationPage.php中的标签 这是我的registra
<div class="container-fluid bg_color8">
<div class="row alignT">
<form action="" method="post">
<div class="col-sm-4">
<p> <span >User Name:</span> <input type="text" name="euname" id="euname" placeholder="username"></p>
</div>
<div class="col-sm-4">
<p> <span >Password:</span> <input type="password" name="eupassword" id="eupassword" placeholder="**********"></p>
</div>
<input name="submit" type="submit" class="btn btn-info col-sm-2" value="Log In" >
<br><label id='message'></label >
</form>
</div>
</div>
用户名:
密码:
这是我的login.php文件:
<?php
session_start();
$message = "Password or username are not correct";
if (isset($_POST['submit'])) {
if (empty($_POST['euname']) || empty($_POST['eupassword'])) {
echo "<script type='text/javascript'>document.getElementById('message').innerHTML =('$message');</script>";
}
else
if ($_POST['euname'] == "Admin" && $_POST['eupassword'] == "Admin"){
$username=$_POST['euname'];
$password=$_POST['eupassword'];
$_SESSION['login_user']=$username;
header("location: mainPage.php");
}
else {
echo "<script type='text/javascript'>document.getElementById('message').innerHTML =('$message');</script>";
}
}
?>
因此,正确的解决方案是,除非您想使用MVC框架,否则使用一个文件
if (isset($_POST['submit']))
{
if(//Input is incorrect){
// Show Form with error message
}else{
// Redirect to /profile or whatever
}
}
else
{
// Show Form
}
这是可行的,但不建议以混合PHP和JS的方式进行混合 它失败的原因是JS希望元素已经加载到DOM上。在您的情况下,ID为
message
的元素无法访问,因为它在加载时还不存在于DOM中。要使此代码正常工作,您必须将php代码放在同一文件的HTML下。。。然而这变得非常混乱和复杂
真的,你应该关注你的结构。您需要决定是单独使用PHP,还是与AJAX一起使用
如果您想单独使用PHP,这不应该是一个问题,您只需要利用这些会话并将其编码如下:
login.php
<?php
session_start();
$message = "Password or username are not correct";
if (isset($_POST['submit'])) {
if (empty($_POST['euname']) || empty($_POST['eupassword'])) {
$_SESSION['message'] = $message;
header("location: registrationPage.php");
} else {
if ($_POST['euname'] == "Admin" && $_POST['eupassword'] == "Admin") {
$username = $_POST['euname'];
$password = $_POST['eupassword'];
$_SESSION['login_user'] = $username;
header("location: mainPage.php");
} else {
$_SESSION['message'] = $message;
header("location: registrationPage.php");
}
}
}
<?php session_start(); ?>
<div class="container-fluid bg_color8">
<div class="row alignT">
<form action="login.php" method="post">
<div class="col-sm-4">
<p> <span >User Name:</span> <input type="text" name="euname" id="euname" placeholder="username"></p>
</div>
<div class="col-sm-4">
<p> <span >Password:</span> <input type="password" name="eupassword" id="eupassword" placeholder="**********"></p>
</div>
<input name="submit" type="submit" class="btn btn-info col-sm-2" value="Log In" >
<?php if (!empty($_SESSION['message'])) { ?>
<br><label id='message'><?= $_SESSION['message'] ?></label>
<?php } ?>
</form>
</div>
</div>
<?php unset($_SESSION['message']); ?>
用户名:
密码:
您可以在要显示错误的位置使用量程来解决问题。在下面的程序中,我将registrationForm.php和login.php合并到另一个php文件中
下面的代码还包含一些格式
.错误{color:#FF0000;}
正如NewToJs所建议的那样,您有两种方法:1)单独使用php,并将php脚本放在页面顶部;或者,如果您真的想将php脚本放在单独的页面上,可以使用ajax
选项1使用php而不使用ajax。
<?php
session_start();
$message = "";
$errors = "";
if (isset($_POST['submit'])) {
if (empty($_POST['euname']) || empty($_POST['eupassword'])) {
$message = "enter username and password";
$errors++;
} else {
$username = $_POST['euname'];
$password = $_POST['eupassword'];
}
// No errors then continue
if($errors <=0){
if ($username === "Admin" && $password === "Admin") {
$message = "login correct redirecting";
$_SESSION['login_user'] = $username;
header("refresh:3; url=MainPage.php"); // redirects
} else {
$message = "incorrect username or password";
}
}
}
?>
<div class="container-fluid bg_color8">
<div class="row alignT">
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<div class="col-sm-4">
<p> <span >User Name:</span> <input type="text" name="euname" id="euname" placeholder="username"></p>
</div>
<div class="col-sm-4">
<p> <span >Password:</span> <input type="password" name="eupassword" id="eupassword" placeholder="**********"></p>
</div>
<input name="submit" type="submit" class="btn btn-info col-sm-2" value="Log In" >
<br><label id='message'><?php echo $message;?></label >
</form>
</div>
</div>
这是因为提交表单时,客户端将从registrationPage.php
移动到login.php
。为此,您需要将客户端保持在同一页面上(registrationPage.php
),我建议您使用AJAX
提交/发送表单数据,一旦AJAX收到响应,您就可以使用document.getElementById('message')).innerHTM=The_Ajax_Response
而不是PHP
输出javascript。您想再次实现什么?您从哪里获得您正在竞争的用户名和密码?如果您不想使用Ajax
,您可以始终将PHP
脚本放在registrationPage.PHP的顶部,并设置一个变量$message='error login details'代码>在if语句中,然后将其回显到html
中,这意味着页面将向客户端所在的同一页面发送数据,但会导致刷新/重新加载,php将运行,如果提交了数据,它将为echo设置$message
变量。这不起作用,因为客户端位于与message
的ID
元素所在的页面不同的页面上。。。。。请记住,
在registrationPage.php页面上,但是php
在login.php上运行,因此客户端将导航到login。php@Hjort-这不是问题所在。他的回声实际上是对的。变量$message
将正确输出,因为它位于由双引号组成的字符串中。。""
。将php
放在registration.php的顶部,并根据if条件的结果设置$message
的相关字符串,并将其回显到
中不是更容易吗?我如何使其仅在按下提交按钮时进行评估,而不是在页面打开时进行评估加载?是的,但是我不建议在同一个HTML页面上放置更多的PHP逻辑。这就是MVC模式如此流行的原因。关键是要将您的逻辑与您的视图分开。您没有回答我的问题,现在此代码将在加载页面时正确地将标签放在“密码或用户名错误”上,即使用户没有按“登录”按钮,我也不希望发生这种情况,因为这毫无意义。。我如何防止它?一旦页面完全加载,您需要取消设置会话。我用
<?php
session_start();
$message = "";
$errors = "";
if (isset($_POST['submit'])) {
if (empty($_POST['euname']) || empty($_POST['eupassword'])) {
$message = "enter username and password";
$errors++;
} else {
$username = $_POST['euname'];
$password = $_POST['eupassword'];
}
// No errors then continue
if($errors <=0){
if ($username === "Admin" && $password === "Admin") {
$message = "login correct redirecting";
$_SESSION['login_user'] = $username;
header("refresh:3; url=MainPage.php"); // redirects
} else {
$message = "incorrect username or password";
}
}
}
?>
<div class="container-fluid bg_color8">
<div class="row alignT">
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<div class="col-sm-4">
<p> <span >User Name:</span> <input type="text" name="euname" id="euname" placeholder="username"></p>
</div>
<div class="col-sm-4">
<p> <span >Password:</span> <input type="password" name="eupassword" id="eupassword" placeholder="**********"></p>
</div>
<input name="submit" type="submit" class="btn btn-info col-sm-2" value="Log In" >
<br><label id='message'><?php echo $message;?></label >
</form>
</div>
</div>