Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图改变user=';管理员';密码=';管理员';使用php和注册页面_Javascript_Php_Html - Fatal编程技术网

Javascript 试图改变user=';管理员';密码=';管理员';使用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

我有一个registrationPage.php文件,其中有一个表单,用于填写用户名和密码,我想使用login.php文件检查这些用户名和密码,如果字段为空或不正确(用户名和密码不是“Admin”),则返回并在标签(registrationPage.php中)上填写消息“Password或username are not correct”(密码或用户名不是“Admin”)

我的问题是,在我描述的一个案例中失败后,我无法更新registrationPage.php中的标签

这是我的registrationPage.php文件的摘录,其中包含登录表单:

 <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.phplogin.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>