php会话不会保存所有变量,而是使用不同的;名称“;按指定
我对php中的会话有问题 我有一个名为“blog.php”的页面,我从session_start()开始,然后我有一个表单来输入用户名和密码:php会话不会保存所有变量,而是使用不同的;名称“;按指定,php,session,Php,Session,我对php中的会话有问题 我有一个名为“blog.php”的页面,我从session_start()开始,然后我有一个表单来输入用户名和密码: <?php session_start();?> <p align="center">To be able to make a post, please sign in.</p> <table width="300" border="0" align="center" cellpadding="0" cell
<?php
session_start();?>
<p align="center">To be able to make a post, please sign in.</p>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="logincheck.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="user" type="text"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="pass" type="text"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
因此,不知何故,我想要保存的变量没有正确保存,因为首先我有来自用户的2个输入,所以数组大小应该是2;其次,我将字符串“Test User”保存在变量“User”下,而不是“u”,因为var\u dumb($\u POST)正在显示给我。
我没有主意了,因为有了另一个项目,一切都很顺利
你知道我做错了什么吗
编辑:代码没有问题,这是我的错误,因为我没有更改服务器上的根目录 但当我将logincheck.php更改为第三个页面时,错误再次出现:
<?php
session_start();
$username = $_POST['user'];
$password = $_POST['pass'];
header("location:blog_reg.php"); //<--new
?>
并给了我“未定义索引:用户”的通知
有什么想法吗
编辑2: 嗯。由于我刚刚尝试了一个非常简单的代码,这个会话似乎有问题: 1.php:
2.php:
<?php
session_start();
echo $_SESSION['test'];
?>
错误:注意:未定义索引:在第4行的C:\wamp\www\test\2.php中测试
[解决]-经过数小时的测试和检查,我终于找到了解决方案。
在php.ini中,我们必须将session.use_cookies的值更改为1
再次感谢在过去几个小时里耐心地与我交谈的人。编辑-问题解决:
为了清楚起见,在聊天室中讨论后,发现会话。use_cookies
被禁用(由于OP事先使用了会话,所以在不知不觉中)
在php.ini中重新打开OP,问题就解决了
任何其他有类似问题的人,请在php脚本中运行php\u info()
,并检查会话部分以查看是否存在任何问题。
例如session.use_cookies off
(除非您通过GET使用session,在这种情况下,这些不需要打开,但如果会话数据在URL中,显然要注意安全!)
这看起来像是编码问题
我刚刚运行了你的代码(复制/粘贴),它运行得非常好
将代码编辑器设置为使用不带bom表的UTF-8,然后保存这两个文件(因此它们显示为另存为UTF-8),然后再次尝试运行脚本(刷新页面,可能需要清除浏览器缓存,具体取决于您的配置)
logincheck.php的测试代码:
<?php
session_start();
$username = $_POST['user'];
$password = $_POST['pass'];
echo $username."<br>".$password;
echo "<br><br>";
var_dump($_POST);
?>
session_start();
$_SESSION['user'] = $_POST['user']; //<-- Variable changed to session
//$password = $_POST['pass']; DO NOT make a session with this
header("location:blog_reg.php");
然后在你的博客_reg.php
中,它可以使用新的$\u会话['user']=$\u POST['user']代码>
不要将密码存储在会话中,因为最终用户可以使用密码,并且可以很容易地从第三方获得密码
第二版
在您的blog\u reg.php上使用var\u dump($\u POST)
将显示零数据,因为您没有向其发布任何数据。
将数据从blog.php发布到logincheck.php,然后在logincheck.php中将发布的数据转换为会话,然后重定向到blog-reg.php,在那里使用会话,而不是发布
您没有从logincheck.php发布到blog-reg.php,因此blog-reg.php没有发布数据,因此“var\u dump($\u POST)”将显示零数据
阅读POST和SESSION之间的区别,同时也了解GET,以便更好地了解如何处理PHP应用程序(或在本例中为单个文件)周围的数据:
职位
一场
得到
您需要的代码:
Sarah,我已经测试了下面的代码,它运行良好,这意味着问题在其他地方。可能您的服务器配置不工作,或者您在本问题中没有显示一些其他代码,这会干扰代码的工作
当这里有这么多潜在的问题在起作用时,很难提供帮助
制作如下三个新文件,并对它们进行测试,这只是我所做的修复建议的代码:
form.php
<?php
session_start();?>
<p align="center">To be able to make a post, please sign in.</p>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="login.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="user" type="text"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="pass" type="text"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<?php
session_start();
$_SESSION['user'] = $_POST['user'];
header("location: result.php");
?>
<?php
session_start();
echo "<p align='center'>Hello ", $_SESSION['user'], "!";
echo "<br><br>POST DUMP (will be empty)";
var_dump($_POST);
echo "<br><br>SESSION DUMP (will have user name data)";
var_dump($_SESSION);
?>
若要发布帖子,请登录
会员登录
用户名
:
密码
:
login.php
<?php
session_start();?>
<p align="center">To be able to make a post, please sign in.</p>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="login.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="user" type="text"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="pass" type="text"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<?php
session_start();
$_SESSION['user'] = $_POST['user'];
header("location: result.php");
?>
<?php
session_start();
echo "<p align='center'>Hello ", $_SESSION['user'], "!";
echo "<br><br>POST DUMP (will be empty)";
var_dump($_POST);
echo "<br><br>SESSION DUMP (will have user name data)";
var_dump($_SESSION);
?>
result.php
<?php
session_start();?>
<p align="center">To be able to make a post, please sign in.</p>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="login.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="user" type="text"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="pass" type="text"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<?php
session_start();
$_SESSION['user'] = $_POST['user'];
header("location: result.php");
?>
<?php
session_start();
echo "<p align='center'>Hello ", $_SESSION['user'], "!";
echo "<br><br>POST DUMP (will be empty)";
var_dump($_POST);
echo "<br><br>SESSION DUMP (will have user name data)";
var_dump($_SESSION);
?>
我发现了两个可能的错误。您缺少表单,或者该表单位于会话\u start()上方。需要先执行session_start(),然后才能回显任何内容。@安东:在这两个页面中,session_start()都是php文件的第一行。正如你所看到的,表格就在那里。我在上面发布了代码。@Anton将出现一个错误,表示此问题“标题已发送”etc@Sarah参见我的答案,请不要在标题中添加“已解决”或类似内容。答案旁边的绿色复选标记就足够了。编辑。谢谢。代码编辑器已经在使用不带bom的UTF-8,仍然再次更改它。完全关闭了浏览器,但仍然出现相同的错误天哪-我发现了我的错误。我忘了更改服务器上的根目录,因此文件没有通过php进行正确解析,因此无法保存任何内容。。。谢谢詹姆斯:)很高兴你被分类了,尽管我什么也没做。另外,这是您的实际问题,因为您的var\u转储($\u POST)代码>在问号字符中显示“测试用户”。不管怎样,现在一切都好了。嗯,好的,当我进入第三页时,再次出现相同的错误--在logincheck.php和第三页之间,会话变量被删除(尽管我没有使用代码执行此操作)。。。使用vqr\u转储($\u POST)代码>显示空数组。。太好了-这个问题在上一个文件(logincheck.php)中修复了吗?