PHP$\u会话变量未保存

PHP$\u会话变量未保存,php,session,Php,Session,很明显,我不擅长这方面的工作,但我想努力做得更好。我为我和未婚夫建立了一个婚礼网站,这让我很头疼。我在索引上有一个简单的登录,通过登录页面、登录确认页面,然后返回到索引。它会将表单中的$_SESSION['name'变量(在mysql中确认)保存回索引,但不会保存到其他任何地方。即使在刷新该页面时,它也会消失 index.php <div id="login"> <span class="login"> <form act

很明显,我不擅长这方面的工作,但我想努力做得更好。我为我和未婚夫建立了一个婚礼网站,这让我很头疼。我在索引上有一个简单的登录,通过登录页面、登录确认页面,然后返回到索引。它会将表单中的$_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;
?>
登录\u success.php

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

?>

我在这些页面的顶部有session_start()。它在那里可以正常工作,但在移动到下一个管理链接时就不行了。我在底部有echo$_session['username');以查看它是否已注册

它托管在GoDaddy上,它将会话内容保存在root/tmp文件夹中,这样就有了它的路径。我不知所措

有没有关于noob的想法

这不是一个重要的登录或任何事情,因为它将只是我或我的未婚夫登录更新图片或其他东西,但想自己做它,使它好看

谢谢,马特

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

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

双重编辑-将加密密码。如果没有$\u会话变量,会有更好的方法完成任务吗?如果只设置了$\u会话['username',],而没有设置密码,会怎么样

最后-好的,谢谢大家!收到了,我正在改进。


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

这不是创建指向此代码的链接,您实际上正在运行它!创建一个包含此代码的
logout.php
页面,然后链接到该页面。这就是会话被破坏的原因。您还需要在所有使用会话的页面上使用
session\u start()

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

<?php session_start(); ?>


希望有帮助。

您需要将
会话\u start()
添加到索引页和希望使用会话变量的每个页面。您正在检查会话变量,但没有启动会话。您可以尝试
打印($\u会话);exit;
以查看会话变量的状态。如果未填入您的值,您可能忘记了按照@JayBlanchard所说的启动会话,或者您正在某个地方取消设置变量。明智的说法;不要在会话中存储重要信息。听说过会话劫持吗?另外,不要将密码存储在普通的文本中文本。如果你要继续使用它,你会被黑客攻击。@Fred ii-Wise确实是Ralph。“这不是一个重要的登录或任何事情,因为只有我或我的未婚夫登录更新图片。”-相信我,有些人会嗅出像这样的网站,就像我之前说的,你会被黑客攻击。所以,我会重新考虑这一点,并使用适当的登录系统,使用预先准备好的语句和强大的密码哈希功能。我经常看到这一点。另外,请注意大家对安全性的看法。尽管会话劫持对于您的网站来说是极为罕见的,学习如何正确地进行登录和会话是每个开发人员都需要知道的事情,您现在可能已经知道了:-)
<?php session_start(); ?>