我在PHP编码中遇到了一个令人困惑的问题。这是我在过去两年创建网站时第一次看到这样的东西。
假设我有以下两页:
1)index.php 2)check.php
现在在index.php
我有以下代码:
session_start();
// 5 digit number for my captcha system
$_SESSION['my_code'] = rand(10000, 99999);
现在这是check.php
中的代码:
session_start();
echo $_SESSION['my_code'];
有时是$_SESSION['my_code']
页面中check.php
的值
与index.php
页面中的值不同。我可以说每4到5次
10次。
如果我在index.php
的会话变量中分配一个常量值,我就不会再看到这个问题。
答案 0 :(得分:1)
第1页(sessions_a.php)
首先,从随机生成的数字中为会话数组分配一个变量。
<?php
session_start();
// 5 digit number for my captcha system
$_SESSION['my_code'] = rand(10000, 99999);
$var = $_SESSION['my_code'];
echo $var; // echo'd example 67859
?>
<a href="sessions_b.php">Sessions B number</a>
然后在第2页(sessions_b.php) - 检查它是否已设置并执行相同的操作。它将从第1页回显相同的数字。
<?php
session_start();
if (isset($_SESSION['my_code'])) {
$var = $_SESSION['my_code'];
}
echo $var; // will have echo'd from example 67859
已经成功测试,将第一页上生成的相同数字回显到第二页20次。
您还可以在第2页内添加session_destroy()
,以便在回显之后销毁该会话。
这将回显第1页的数字,但如果之后重新加载第2页则不会回显它 例如:有人在从第1页进入回音后重新加载第2页。
<?php
session_start();
if (isset($_SESSION['my_code'])) {
session_destroy();
echo $_SESSION['my_code']; // will only echo once, not on reloading that page
}
else{
echo "Session's timed out.";
}
参考文献:
答案 1 :(得分:0)
每当呈现index.php时,您都会通过
更改会话的值 $_SESSION['my_code'] = rand(10000, 99999);
如果是常数,则限制值。这就是您查看不同值的原因。
您可以在索引上指定一个特定值,如果已经设置了会话,请不要再使用php的ISSET函数设置它。
答案 2 :(得分:0)
每次访问$_SESSION['my_code']
时,您都会将index.php
设置为新内容。
你可以做的是:
if (!isset($_SESSION['my_code'])) {
$_SESSION['my_code'] = rand(10000, 99999);
}
然后,如果没有设置,它将是一个随机数,如果设置了,它将不会重新选择一个数字。
答案 3 :(得分:0)
我在这个问题上花了很多时间,但是我找到了解决方案。 问题是没有有效网址的图片。我为我的图像分配了正确的URL,问题得到了解决。