注册和登录部分工作正常但是当用户登录时,标题上的欢迎消息仍然是“欢迎客人”。我在创建会话或调用会话时遇到错误,我无法理解。
loginCheck.php
session_start();
include ("connection.php");
if(isset($_POST["username"], $_POST["pw"])){
$username = mysql_real_escape_string($_POST["username"]);
$pw = mysql_real_escape_string(md5($_POST["pw"]));
$sql = mysql_query("SELECT * FROM uye WHERE kullanici_adi = '$username' AND sifre = '$pw'");
if(mysql_num_rows($sql) == 1){
$_SESSION["loggedIn"] = 1;
$_SESSION["username"] = $username;
die("ok");
}
else{
$_SESSION["loggedIn"] = "";
}
}
的header.php
<?php
session_start();
include ("connection.php");
include ("html.php");
include ("login.php");
include ("signup.php");
?>
<body background="images/wallpaper-703170.jpg" class="background">
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<ul class="nav navbar-nav">
<a class="navbar-brand" href="/KacYakiyor/home.php">Kaç Yakıyor</a>
</ul>
<ul class="nav navbar-nav navbar-right">
<p class="navbar-text" id="welcome">
<?php
if (isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == 1) {
echo "Hoşgeldin" . $_SESSION['username'] . "!";
}
else{
echo "Hoşgeldin Ziyaretçi";
}
?>
</p>
<li><a data-toggle="modal" href="#loginModal" id="login">Giriş</a></li>
<li><a data-toggle="modal" href="#signupModal" id="signup">Üye Ol</a></li>
</ul>
</div>
更新:似乎问题是会话无法将一个页面传递给另一个页面。众所周知,这个问题是一个session_start()问题,但我认为我把它们正确放置了。
答案 0 :(得分:2)
将session_start();
放在标题的顶部,必须在您希望会话数据存在的每个页面上设置session_start();
,并且它必须是在任何输出之前调用的第一个函数,因为这个函数会发送HTTP头。
答案 1 :(得分:1)
在loginCheck.php中,您可以尝试将两个条件之间的逗号更改为&amp;&amp;并看看它是否有效?
而不是
if(isset($_POST["username"], $_POST["pw"])){
.....
}
尝试;
if(isset($_POST["username"]) && isset($_POST["pw"])){
.....
}
答案 2 :(得分:0)
检查你的病情。从您的代码中看,条件似乎返回false,从而将您重定向到其他位置。
答案 3 :(得分:0)
session_start();
include ("connection.php");
if(isset($_POST["username"], $_POST["pw"])){
$username = mysql_real_escape_string($_POST["username"]);
$pw = mysql_real_escape_string(md5($_POST["pw"]));
$sql = mysql_query("SELECT * FROM uye WHERE kullanici_adi = '$username' AND sifre = '$pw'");
if(mysql_num_rows($sql) == 1){
$_SESSION["loggedIn"] = 1;
$_SESSION["username"] = $username;
die("ok");
}
else{
$_SESSION["loggedIn"] = "";
}
}else{
$_SESSION['dummy'] = "dummy here";
}
尝试在logincheck.php和你的其他文件中执行此操作,在任何if语句之前执行print_r($ _ SESSION)。如果打印出假人,那么你正在做错误的if语句,因为我怀疑这条特定的行:
if(isset($_POST["username"], $_POST["pw"])){
试试吧
if(isset($_POST["username"] && $_POST["pw"])){