当前位置: 首页 > 知识库问答 >
问题:

PHP会话不识别变量时,标题到另一个页面

邢同
2023-03-14

因此,我使用PHP和MySQL数据库创建了一个登录成功的登录页面。我的代码成功地检查了用户名和密码,并且只有在它们正确后才允许我进入下一页。

但是,我无法在成功登录页面上打印用户名。所以我不确定我的会话是否正常运行。

login.php

<!DOCTYPE HTML>
<html>
<?php 
session_start();
?>
<head>
<title>Login</title>
</head>
<body>

<!--<form action ="SuccessfulLogin.php" method = "get"> --> // If I put this in my code, the whole program stops checking Username and Password, and just put me to the next page
<?php
//define variables and set to empty values
 $nameErr = $loginErr = "";
 $Username = $website = $Password = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
     if (empty($_POST["Username"])) {
        $nameErr = "Name is required";
      } else {
        $Username = test_input($_POST["Username"]);  
      }

      if (empty($_POST["Password"])) {
        $passErr = "Password is required";
      } else {
        $Password = test_input($_POST["Password"]); 
      }
    //continues to target page if all validation is passed
    if ( $unameErr ==""&& $passErr ==""){
        // check if exists in database
        $dbc=mysqli_connect('localhost','testuser','password','Project')
        or die("Could not Connect!\n");
        $hashpass=hash('sha256',$Password);
        $sql="SELECT * from Members WHERE Username ='$Username' AND Password='$hashpass';";
        $result =mysqli_Query($dbc,$sql) or die (" Error querying database");
        $a=mysqli_num_rows($result);

        if ($a===0){
            $loginErr="Invalid username or password";
        }else{ 
            $_SESSION["Username"]=$Username;
            header('Location: /SuccessfulLogin.php');
        }
    }
}

   // clears spaces etc to prep data for testing
function test_input($data){
    $data=trim ($data); // gets rid of extra spaces befor and after
    $data=stripslashes($data); //gets rid of any slashes
    $data=htmlspecialchars($data); //converts any symbols usch as < and > to special characters
    return $data;
}

?>

<h2 style="color:yellow" align="center"> Login </h2>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" align="center" style="color:#40ff00">

 User Name: <input type="text" name="Username" value="<?php echo $Username;?>"/>
<span class="error">* <?php echo $unameErr;?></span>
<br/><br/>
Password:
<input type="text" name="Password" value=""/>
<span class="error">* <?php echo $passErr;?></span>
<br/><br/>
<span class="error">* <?php echo $loginErr;?></span>

<input type="submit" name="submit" value="Login"/> 
</form>

<!--</form>--> // closing tag of form action SuccessfulLogin.php
</html>

成功ogin.php

<!doctype html>
<html>
<?php
session_start();
$Username=$_GET['Username'];
$_SESSION['Username']=$Username;
?>
<head>

    <meta charset="utf-8">
    <title>Login Form</title>
    <link rel="stylesheet" href="RegisterLogin.css">
</head>

<body>

<!--<form action ="MemberMenu.php" method = "get">-->

    <h2><?php echo "User $Username LOGGED IN"; ?></h2> // Doesn't print out the $Username

    <p align="center"> <a href="MemberMenu.php"> Click here to be redirected to the menu page </a> </p>


<!--</form>-->
</footer>   
</body>
</html>

共有3个答案

楚冷勋
2023-03-14

更改这行代码

<?php
session_start();
$Username=$_SESSION['Username'];
$_SESSION['Username']=$Username;
?>

进入:

<?php
session_start();
$Username=$_SESSION['Username'];
?>

在此阅读有关PHP会话的更多信息

景稳
2023-03-14

在本例中,您使用的是空的$\u GET[“Username”],然后将$\u SESSION[“Username”]设置为空变量。

这也是一种非常奇怪的用户身份验证方法。

梅飞龙
2023-03-14

您需要检查会话是否已设置。

改变

<?php
session_start();
$Username=$_GET['Username'];
$_SESSION['Username']=$Username;
?>

<?php
session_start();
if (isset($_SESSION['Username'])) {
    $Username=$_SESSION['Username'];
    echo $Username;
}
?>
 类似资料:
  • 问题内容: 我可以将值从一页传递到另一页,但我需要像这样传递值, 第1页: Page4.php Page3.php 我需要将Page1.php的文本字段中的值传递给Page2.php中的文本字段,因为表单不是直接重定向到Page2,所以我无法传递该值,我尝试了会话,表单发布方法和其他几种方法,但我尚未成功。 如果您可以帮助我提供代码或一些建议,我将非常高兴。 谢谢! 编辑.......... 我找

  • 我是使用会话变量的新手,尽管我在网上搜索了解会话变量,但我一直在苦苦挣扎。 所以基本上我有一个页面(search.php)。我加载一个基于搜索表单的动态数据表。加载表后,我通过AJAX执行以下操作: 正如您在Success和单击table row记录时所看到的,我的想法是通过AJAX发布一个变量以供以后使用。并将用户重定向到update.php页面。 然后,我希望使用发布的AJAX变量在sessi

  • 我有一个来自firebase的uid,但它是这样存储的: checkout.js 存储我需要传递到另一个页面的uid。这个uid存储在中,我需要将它放到中才能在那里使用uid。我该怎么做?如果需要更多代码,请让我知道。我正在使用react/js

  • 你好,朋友,一个新手问题。我是编程新手,所以请温柔一点。 我试图使用JavaScript发布多个会话变量,这样我就可以在以后的PHP中的多个地方使用它们。 我的index.php文件 我的vals.js文件 我的session.php档案 我知道代码很乱,但我不知道如何编写正确的语法。我实际上试图修改一个变量代码,但失败了。因此需要帮助。 其思想是将从各种JavaScript函数派生的各种值发布到

  • 问题内容: 我正在使用类似的会话将变量传递到URL中的另一个页面,但是看来我无法将另一个变量连接到相同的URL并成功在下一页中检索它 第1页 第2页 在第2页上显示错误,但如果仅在此处使用 效果很好,但是我需要能够在url中使用两个变量,以便页面2可以检索得到它们。 问题答案: 使用与号将变量粘合在一起:

  • 问题内容: 所以我想知道当在多个php文件中使用变量名时,是否有可能从特定的php文件中获取变量。一个例子是这样的: page1.php有 page2.php有 footer.php应该有 好的,这个例子有点抽象,但是就我所能讲的那么短。我想你明白我的意思!这就是我追求的页脚!有什么解决办法吗? 问题答案: 您可以,但是最后一个include中的变量将覆盖第一个中的变量: myfile.php m