PHP $ _SESSION变量没有持有

时间:2015-03-09 17:51:37

标签: php session

我对这些东西并不擅长,但很明显,但我想尝试变得更好。我和我的未婚夫有一个婚礼网站,我有麻烦。我在索引上有一个简单的登录,它通过登录页面,登录确认页面并返回索引。它将从表单中保存$ _SESSION ['name'变量,在mysql中确认,返回索引但不在其他任何地方。即使在刷新该页面时,它也会消失。

的index.php

  <div id="login">
        <span class="login">
            <form action="login.php" method="post" id="loginform">
                <label for="name">User:</label>
                <input type="text" name="name" id="name" size="12">
                <label for="password">Password:</label>
                <input type="password" name="password" id="password" size="12">
                <input type="submit" value="submit" id="submit">
                <input type="button" value="hide" id="hide" onclick="loghide()">
            </form>
        </span>
    </div>
    <br />
    <div id="logged">
        <?php
if (isset($_SESSION['username'])){
echo "<script      type='text/javascript'>document.getElementById('logged').style.cssText='opacity:1;-webkit-transition:1s;-moz-transition:1s;-o-transition:1s;-ms-transition:1s;transition:1s;';</script>";
echo "<script    type='text/javascript'>document.getElementById('login').style.cssText='display:none;';</script>";
}      
?>
        <span class="logged">
                <ul id="adminlinks">
                    <div id="event">
                        <div id="hiddenlinks">
                            <li><a class="links" id="hidden2"     href="events.html">index</a></li>
                            <br />
                            <li><a class="links" id="hidden3"      href="events.html">our story</a></li>
                            <br />
                        </div>
                        <li><a class="links">update</a></li>
                    </div>
                    <li><a class="links" href="addphotos.php">add     photos</a></li>
                       <li><a class="links" href="<?php session_destroy(); header("Location:index.php"); ?>">Log Out</a></li>
                </ul>
        </span>
    </div>
</div>
<div id="bottom">
    <span class="foot">july fourth, two thousand and fifteen</span>
</div>
</div>

<?php
echo $_SESSION['username'];
echo $myusername;
?>

的login.php

////deleted mysql connection stuff
session_start();
$_SESSION['username']=$myusername;
$_SESSION['password']=$mypassword; 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>

login_success.php

<?php
session_start();
if (!isset($_SESSION['username'])){
echo "nope";
} else {header("location:index.php");}

?>

我在这些页面的顶部膨胀了session_start()。它会在那里工作,但然后移动到我的下一个管理链接它不会。我有echo $ _SESSION ['username'];在底部查看它是否已注册。

它托管在GoDaddy上,它会将会话内容保存在root / tmp文件夹中,因此它有一个路径。我很茫然。

任何关于菜鸟的想法?

这不是一个重要的登录或任何东西,因为它只是我或我的未婚夫登录更新图片或东西,但想自己做,并使它很好。

谢谢,马特

Edit- Index.php和addphotos.php有session_start();在页面顶部。

我称之为下一个管理链接是addphotos.php与索引相同,后面会添加其他内容。

Double Edit - 要加密密码。没有$ _SESSION变量会有更好的方法来完成事情吗?如果只设置了$ _SESSION ['username']而不是密码1,该怎么办?

最终 - 好的,谢谢大家!得到它并且正在改进。

2 个答案:

答案 0 :(得分:0)

<a class="links" href="<?php session_destroy(); header("Location:index.php");?>">Log Out</a>

这不是创建此代码的链接,而是实际运行它!使用此代码创建一个logout.php页面,然后链接到该页面。这就是您的会话被销毁的原因。您还需要在使用会话的所有页面上session_start()

答案 1 :(得分:-1)

你必须调用session_start();在索引页面上为了在那里使用它,会话被保留,只是你需要告诉程序启动会话,因此它将使用那里找到的值。 将以下代码放在index.php文件的第一行:

<?php session_start(); ?>

希望它有所帮助。