2014-10-28 76 views
0

我在我的文件下面的代码片段: -会话数据不会持久 - php配置问题?

session_start(); 
$_SESSION['fromPanel'] = "abcd"; 

<form method="post" action="/m/xyz.php"> 
    <div class="text inputcaption"><b><?= _("Email")?></b></div> 
    <input type="email" name="username" value="<?=$objMobile->GetEmail()?>"> 
    </div> 
</form> 

当文件xyz.php上称为POST请求,该$_SESSION阵列来了空。在打印会话数组之前,请注意session_start();xyz.php中给出。为什么会话数组本身变空了。有谁能够帮助我?

代码xyz.php:

<?php 
    session_start(); 

    print "<pre>"; 
    print_r($_SESSION); 
    print "<post>"; 
?> 

请找到通过的phpinfo得到的对话设置();

|---------------------------------|---------------------|---------------------| 
| Session Support     | enabled    |      | 
| Registered      | save handlers  | files user   | 
| Registered      | serializer handlers | php php_binary wddx | 
|         |      |      | 
|---------------------------------|---------------------|---------------------| 
| Directive      | Local Value   | Master Value  | 
|---------------------------------|---------------------|---------------------| 
| session.auto_start    | Off     | Off     | 
| session.bug_compat_42   | On     | On     | 
| session.bug_compat_warn   | On     | On     | 
| session.cache_expire   | 180     | 180     | 
| session.cache_limiter   | nocache    | nocache    | 
| session.cookie_domain   | no value   | no value   | 
| session.cookie_httponly   | Off     | Off     | 
| session.cookie_lifetime   | 0     | 0     | 
| session.cookie_path    |/     |/     | 
| session.cookie_secure   | Off     | Off     | 
| session.entropy_file   | no value   | no value   | 
| session.entropy_length   | 0     | 0     | 
| session.gc_divisor    | 100     | 100     | 
| session.gc_maxlifetime   | 1440    | 1440    | 
| session.gc_probability   | 1     | 1     | 
| session.hash_bits_per_character | 4     | 4     | 
| session.hash_function   | 0     | 0     | 
| session.name     | PHPSESSID   | PHPSESSID   | 
| session.referer_check   | no value   | no value   | 
| session.save_handler   | files    | files    | 
| session.save_path    | C:\Windows\Temp  | C:\Windows\Temp  | 
| session.serialize_handler  | php     | php     | 
| session.use_cookies    | On     | On     | 
| session.use_only_cookies  | Off     | Off     | 
| session.use_trans_sid   | 0     | 0     | 
|---------------------------------|---------------------|---------------------| 

上启用的error_reporting,以下警告被视为:

Warning: Unknown: open(C:\Windows\Temp\sess_1037ca26d3ebb62017eddc9cbfb107e2, O_RDWR) failed: Invalid argument (22) in Unknown on line 0 

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (C:\Windows\Temp) in Unknown on line 0 
+1

愚蠢的问题,但你有相同的'session_start();'在你的xyz.php文件在顶部? – Fluffeh 2014-10-28 08:43:44

+1

请向我们展示'xyz.php'文件中的代码,您可以在其中输出'$ _SESSION'数组以及开始会话的位置! – Rizier123 2014-10-28 08:50:14

+0

因为我把session_start();在xyz.php的顶部,但仍然会出现这种情况,我认为与服务器配置或php.ini配置有关的问题可能是一个问题。 – clint 2014-10-28 11:32:02

回答

-2

如果你是包括所有类似的header.php或只的common.php写在session_start()顶部的观点共同文件。

+0

你假设有一些文件倾向于? – 2014-10-28 08:52:28

0

我将您的代码段转换为工作代码,它像魅力一样运行。 请提供完整的非工作示例,以便我们可以为您提供帮助。

a.php只会:

<?php 
session_start(); 
$_SESSION['fromPanel'] = "abcd"; 
?> 

<form method="post" action="./b.php"> 
    <input type="email" name="username" value="[email protected]"> 
</form> 

b.php:

string 'abcd' (length=4) 

string '[email protected]' (length=16) 

back to form 

NB:发送形式(使用在输入输入)之后

<?php 

session_start(); 

var_dump($_SESSION['fromPanel']); 
var_dump($_POST['username']); 

echo '<a href="./_test.php">back to form</a>'; 

结果输出使用<label for="id-of-form">caption</label>代替<div class="text inputcaption"></div>

+0

Ofcourse它适用于某些系统,因此它似乎是一个配置问题。但是,需要改变的配置是这个问题。 – clint 2014-10-28 11:34:08

+0

所以你应该在你的问题中写下完全相同的内容。 ;)这是第一次开始,因为你没有提供太多的信息。 – wedi 2014-10-28 16:40:12

0

要检查的更多内容:

  1. 您正在使用的浏览器是否接受Cookie?
  2. 清除缓存和cookie,在session_start()之后调用session_regenerate_id()以确保它不是一些旧测试的东西会给您带来麻烦。
  3. session.save_path是否可设置和可写?检查您的phpinfo();输出。
  4. xyz.php是否在同一个域名? Cookies不允许使用crosss域名。
  5. 发布您的session.xyz设置。
  6. 这是您的自己的服务器?在托管的网站空间上尝试,反之亦然。
  7. 确保在session_start()调用之前没有空白。第一件事
  8. 请致电error_reporting(E_ALL)
  9. 让您的示例公开可用,以便其他人也可以检查。
  10. 去喝杯啤酒。它将在下周工作。 ;)
+0

会议设置随附的问题和警告也包含在内。 – clint 2014-10-29 05:17:14

+0

我们在这里。警告声明Web服务器无法保留会话数据。原因可能是你需要避开反斜杠。尝试在您的php.ini中将'session.save_path'设置为'C:\\ Windows \\ Temp'。或者用(单个)正斜杠替换反斜杠。 – wedi 2014-10-29 12:44:53