PHP 登录后不保存 $_SESSION 变量

标签 php authentication

第一次来。希望这能奏效!

我是 PHP 的新手,正在尝试创建一个网站,用户可以在其中拥有自己的页面,其中包含他们可以编辑的内容。我让登录系统工作了一半。它可以正确识别用户名和密码,但它似乎没有存储 $_SESSION 变量。起初我以为这是因为我试图将用户名(本身是一个变量)设置为 $_SESSION 变量,但即使我将它设置为绝对变量,我检查用户是否登录的代码也会将它们重定向到“您尚未登录”页面。这是我的验证 php 代码:

<?php

$host="xxxx.ipagemysql.com";
$username="xxxxx";
$password="xxxxxx";
$db_name="farmers";
$tbl_name="users";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$farmeruser=$_POST['farmeruser'];
$farmerpw=$_POST['farmerpw'];

$sql="SELECT * FROM ".$tbl_name." WHERE farmeruser='".$farmeruser."' and farmerpw='".$farmerpw."';";

$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){

session_start();
$_SESSION['member'] = "affirmative";
header("location:succesful_login.php");
}
else {
echo "Wrong Username or Password";
}
?>

这是我的页面,它从未识别出用户已登录:

<?php
session_start();
if($_SESSION['member'] == "affirmative")
{
echo
"Welcome!";
}
else {
header('Location: http://www.leukosweb.com/user_not_recognized.php');
}
?>

为什么这不起作用的任何想法?

附言。我想将“肯定”更改为用户的登录名。如果你想帮助我使用登录验证页面中的变量来设置 $_SESSION 'member' 变量,那也很棒!

最佳答案

session_start()需要向用户的浏览器添加一个 cookie,如果您在第一个 <?php 之前有任何空间这将输出到浏览器并会搞砸设置 cookie。我会移动 session_start()到第二行

<?php
session_start();

并确保没有额外的空间你可以检查你的浏览器cookies,看看你是否有一个cookie PHP_SESSION或类似的,如果你

print session_start();

它应该返回 true如果能够创建 session - 如果不能,则 PHP 配置和创建 session 可能有问题。

这个也需要改正

header("location:succesful_login.php");

应该是

header("Location: succesful_login.php");

关于PHP 登录后不保存 $_SESSION 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409468/

相关文章:

php - MYSQL 到带有 PHP 的 CSV,顶部有 4 个空行

php - 打字错误 extbase : is there a way to map exec_SELECTgetRows results to entities?

php - 尝试获取从 mysql 数据库返回的多个随机结果

php - 在 Laravel 中使用迁移重命名表

php - suexec 策略违规

python - 针对 Windows 域的分散式身份验证

session - 使用 Cookie 与 Session 进行登录

.net - 具有多个身份验证过滤器的 ASP.net Web API 2 Controller

ajax - ExtJS:使用 'Remember me' 功能登录

authentication - 通过外部站点登录 Moodle