我有这个PHP代码,这是一个简单的登录系统。
<?php
session_start();
// Connecting to DB
mysql_connect("localhost", "database1", "dbdb1");
mysql_select_db("dbdb");
// Getting session info and params AFTER sending POST params
print_r($_SESSION);
function doLogin($username_post, $password_post){
$select_login = "
SELECT
id,
username
FROM
users
WHERE
username = '$username_post'
password = '$password_post'
LIMIT 1";
$query_login = mysql_query($select_login);
$rows_login = mysql_num_rows($query_login);
$array = mysql_fetch_assoc($query_login);
if($rows_login>0){
$_SESSION['user_in'] = True;
return True;
}else{
return False;
}
}
// LOGIN
$username = $_POST['username'];
$password = $_POST['password'];
if(!empty($username) && !empty($password)){
doLogin($username, $password);
}
?>
<!DOCTYPE HTML>
<html>
<body>
<form action = "" method = "post">
<input type = "text" name = "username"/>
<input type = "password" name = "password" />
<button type="submit" name = "submit">Login</button>
</form>
</body>
</html>
显然,它有效。这段代码在本地模式下工作得很好,但是当我在服务器模式下执行时,我遇到了一个严重的问题,它根本不起作用。如果你看到,我把print_r();在代码中,我放置了它,以便知道会话是否成功发送。在本地模式下,我可以在重新加载后看到发送的参数。在服务器模式下,我看不到它,似乎没有发送会话。
有什么建议吗?这段代码到底发生了什么?我需要知道它为什么在本地模式下工作,而不是在服务器上工作。
PHP SESSION:
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 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 /var/lib/php/session /var/lib/php/session
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0
答案 0 :(得分:0)
我猜你的数据库服务器有相同的数据库,其登录名和数据与本地机器相同?
如果没有从DB返回任何行,则不会设置会话值
答案 1 :(得分:0)
也许您的服务器不支持会话。检查phpinfo()
命令并检查是否启用了session support
参数,如果已启用,请检查服务器管理员的其他会话参数
编辑1:您应该在条件
之间使用AND
$select_login = "
SELECT
id,
username
FROM
users
WHERE
username = '$username_post' AND
password = '$password_post'
LIMIT 1";