php post请求和重定向

php post请求和重定向,php,Php,我正在创建一个页面,其中的add\u user.php页面应该在之后让您登录 login.php页面使用: $_POST['username'] $_POST['password'] 为了验证和登录,它还填写了大量会话变量,我不想重新计算这些变量 我希望add_user.php在插入数据库后登录 以下是未执行我要执行的功能的最后代码位: $_SESSION["username"] = $username; $_SESSION["password"] = $password; header("l

我正在创建一个页面,其中的
add\u user.php
页面应该在之后让您登录

login.php
页面使用:

$_POST['username']
$_POST['password']
为了验证和登录,它还填写了大量会话变量,我不想重新计算这些变量

我希望
add_user.php
在插入数据库后登录

以下是未执行我要执行的功能的最后代码位:

$_SESSION["username"] = $username;
$_SESSION["password"] = $password;
header("location:dashboard.php");

我想使用
$username
$password
并将它们传递到
login.php
页面。

我认为有很多方法可以做到这一点,最简单的方法是

1创建一个会话密钥(存储在db per session and user中),通过将其写入$_session['sKey']之类的内容进行设置,并在要登录的页面上执行以下操作:

 if (isset($_SESSION['sKey'])){
    $validLogin = check_sKey_from_DB($_SESSION['sKey']); //previously created function that checks, if the key is present in the DB and still valid...
    if($validLogin){
     //you are logged in
    }
 }
 Table(sessions): 
 userid(foreignkey)|loggedin(date)|sessionid(randomly generated Number)|validthrou(date)
在DB中,您应该有如下内容:

 if (isset($_SESSION['sKey'])){
    $validLogin = check_sKey_from_DB($_SESSION['sKey']); //previously created function that checks, if the key is present in the DB and still valid...
    if($validLogin){
     //you are logged in
    }
 }
 Table(sessions): 
 userid(foreignkey)|loggedin(date)|sessionid(randomly generated Number)|validthrou(date)
2通过,例如通过标题获取属性,类似于:

 header("Location:index.php?user=mustermann&pass=123")
  • 或者只是设置会话,然后检查

  • 在设置全局变量的任何值之前,请记住启动会话。
    $\u会话


    session_start()
    用于启动会话。

    使用PHP
    会话
    超全局数组,您需要在
    部分的最开始启动
    会话。
    
    参见示例-

    <?php
    session_start();  //session is started here just the next line of <?php
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;
    
    ?>
    
    
    

    现在这个会话变量可以用于任何其他页面,比如add_user.php页面。

    不理解。请详细说明。设置位置标题将导致浏览器发出GET请求,没有标题可以引发帖子。您可以通过多种方式完成任务(让Login接受GET参数,
    包含
    使用添加用户登录,使用javascript表单提交执行重定向)-为了得到正确的答案,您需要编辑您的问题以包含更多的细节。为什么不使用
    html
    form
    method=“post”
    ?将变量传递给
    login.php
    ?我决不会建议在GET url请求中使用任何形式的明文密码:if(空($\u SESSION[“username”])){//不是新用户$username=$\u POST['username'];$password=$\u POST['password'];header(“location:loggedin.php”);}要测试,不幸的是,我从未重定向您的问题对我来说不是很清楚。header()函数中有问题吗?如果只是header()函数不起作用,那么我建议您使用一个有效的过程;