POST操作SESSION变量删除

时间:2013-09-10 04:20:10

标签: php javascript session

我有一个index.php包含一个用于更改表单操作的JavaScript代码

<script>
window.onload=function() {
document.getElementsByName("myproject")[0].onchange=function() {
var path = this.value;
if (path) this.form.action=path+'/main.php';
}
}
</script>

这个脚本每次更改其值时都会更改我的表单操作,然后我还有一个

<form action = "" method = "POST"><table>
<td>Select Project: </td><td><select name="myproject" id="myproject">
<td>USERNAME: </td><td><input type="text" name="user" id="user"/></td>
<td>PASSWORD: </td><td><input type="password" name="pass" id="pass"/></td>
<option value="">Please Select</option>
<option value="Exam1">Exam1</option>
</select></td>
<input type = "submit" name="login"/>
</form>

我也有一个PHP代码。我已经

<?php
session_start();
error_reporting(0);
$_SESSION['user'] = "";
$_SESSION['pass'] = "";
if ($_POST['login'])
{ 
$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];
?>

当我重定向到我的Exam1 / main.php时,我丢失了SESSION变量。我的Exam1 / main.php包含此代码以确定我是否获得了会话变量

<?php
session_start();
error_reporting(0);
$mainuser = $_SESSION['user'];
$mainpass = $_SESSION['pass'] ;
echo $mainpass.$mainuser;
?>

为什么我会丢失会话变量。

6 个答案:

答案 0 :(得分:1)

您正在两次session_start()我们

初始化会话

答案 1 :(得分:1)

您必须拥有index.php main.php中所拥有的PHP代码。您的表单操作为main.php

<?php
session_start();
error_reporting(0);
$_SESSION['user'] = "";
$_SESSION['pass'] = "";
if ($_POST['login'])
{ 
$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];
?>

由于重定向到main.php $_POST数据可用,因此只能分配给$_SESSION

答案 2 :(得分:0)

假设PHP与表单输入位于同一个文件中,这应该都可以。要检查的一些事情是确保你的Apache配置允许_SESSION数据,我知道有些主机默认关闭它,虽然没有好的。但/ / p>

还要确保在任何其他需要会话数据的脚本之前初始化session_start()。

如果情况可能并非如此,那么我在想的是你正在以某种方式重置变量。尝试删除:

$_SESSION['user'] = "";
$_SESSION['pass'] = "";

当使用实际信息设置时,这是半冗余的。

只是侧面提示,因为我相信您将使用此登录表单时请注意您的安全措施。连接数据库后,使用存储的$ _SESSION用户和密码(md5'ed)确认每个安全页面上的身份验证。

如果你想要一个例子我有一个我可以分享的脚本。

答案 3 :(得分:0)

试试这个:

更改if ($_POST['login'])if (isset($_POST['login']))

你也错过了关闭}

答案 4 :(得分:0)

这就是我所理解的

 <?php

    if ($_POST['login'])
    { 
    $_SESSION['user'] = $_POST['user'];
    $_SESSION['pass'] = $_POST['pass'];
    }
    ?>

这是您在index.php中为会话变量分配值的位置。这只会在您提交表单而不更改选择的值时执行。因为表单最初不会对操作有任何价值。< / p>

<form action="">

因此它将被提交到同一页面并将$ _POST ['user']分配给$ _SESSION ['user']

否则, $ _ SESSION ['user'] $ _ SESSION ['pass'] 没有分配值。

因此,如果您更改select中的值并在重定向到Exam1 / main.php时提交表单,则没有为 $ _ SESSION ['user'] $ _ SESSION [ '通']

答案 5 :(得分:0)

您是否在以下地点使用并更改了$user$pass的值:

$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];

我现在不知道它是错误还是设计,但是:

$_SESSION['a']=10;
echo "{$_SESSION['a']}<br>"; //will print 10
$a=20;
echo "{$_SESSION['a']}<br>"; //will print 20!
当我使用$_SESSION['id'] ...

时,这对我来说是个大惊喜