Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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
php会话不会保存所有变量,而是使用不同的;名称“;按指定_Php_Session - Fatal编程技术网

php会话不会保存所有变量,而是使用不同的;名称“;按指定

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中的会话有问题

我有一个名为“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" 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>&nbsp;</td>
<td>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</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)中修复了吗?