我做了一个php会话,它在我的localhost服务器上使用XAMPP,但是当我把它放在我的网站上时它没有用。我做了一个更简单的工作,看看它是否有效,但仍然没有。
login_validation.php
<?php
session_start();
$user = $_POST['user'];
if ($user == (--database match--)) { #<== Just to skip all the mysql database stuff that already works.
$_SESSION['username'] = $user;
if (isset($_SESSION['username'])) {
echo "Logged in, " . $_SESSION['username'] . "<a href='test.php'>Return</a>";
}
}
?>
此页面适用于我的网站和localhost。在网站上,它打印了给定的用户名,显示会话已保存。所以我创建了一个名为test.php
的空白页面,看它是否会打印会话,如果实际设置的话。
test.php
<?php
session_start();
if (isset($_SESSION['username'])) {
echo $_SESSION['username'];
}
else {
echo "Not working.";
}
?>
它在我的本地主机上打印出会话的价值,但在我的网站上没有。它给了我“Not Working”,就像我为上面的else语句设定的那样。
我认为这是我的phpinfo.php中的一个问题所以我用localhost phpinfo.php文件分析了会话部分的每个部分,其中一些是相同的。其他人则没有。
会话(网站)值:(第1 - &gt;本地值)(第2 - &gt;主值)
Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn Off Off
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 /dev/urandom /dev/urandom
session.entropy_length 0 0
session.gc_divisor 1000 1000
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 /var/php_sessions /var/php_sessions
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 1 1
会话(localhost)值:(1st - &gt; Local Value)(2nd-&gt; Master Value)
session.auto_start Off Off
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 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
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:\xampp\tmp C:\xampp\tmp
session.serialize_handler php php
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies On On
session.use_only_cookies Off Off
session.use_strict_mode Off Off
session.use_trans_sid 0 0
我不确定phpinfo()的信息是否至关重要,但我希望它可以解决这个问题。
答案 0 :(得分:0)
尝试将您的php.ini session.save_path
值设置为/tmp
,就像这样
session.save_path = "/tmp"
如果您无权访问服务器上的覆盖php.ini文件,您可以尝试使用
设置路径session_save_path("/tmp");
在致电session_start();