首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:如何集成我的昵称的更新,而不必注册和登录才能看到新的昵称?

问PHP:如何集成我的昵称的更新,而不必注册和登录才能看到新的昵称?
EN

Stack Overflow用户
提问于 2015-10-05 18:11:31
回答 1查看 53关注 0票数 0

我正在使用PHP进行注册和登录表单,我遇到了一个问题。目前,一切都很完美,但我只是有一个小问题。当用户连接时,在他的帐户中,我添加了更改他的昵称的能力。我的代码有效,但我有个问题。当我更改昵称时,昵称将在数据库中更新,但不会在标题中更新:

http://prntscr.com/8o2ipa

代码:

代码语言:javascript
复制
<div id="header">
    <div class="wrapper">
        <div id="logo">
            <a href=".">Logo</a>
        </div>
        <ul class="visitor-links">
            <?php if(isset($_SESSION["auth"])): ?>
            <li>
                <a href="account.php" class="account">Welcome, <?= $_SESSION["auth"] -> nickname; ?></a>
            </li>
            <li>
                <a href="sign-out.php" class="sign-out button primary">Sign Out</a>
            </li>
            <?php else: ?>
            <li>
                <a href="sign-in.php" class="sign-in">Sign In</a>
            </li>
            <li>
                <a href="sign-up.php" class="sign-up button primary">Sign Up</a>
            </li>
            <?php endif; ?>
        </ul>
    </div>
</div>

昵称更新的代码:

代码语言:javascript
复制
if(!empty($_POST["nickname"]))
{
        $user_id = $_SESSION["auth"] -> id;
        $req = $pdo -> prepare("UPDATE users SET nickname = ?") -> execute([$_POST["nickname"]]);
        $_SESSION["flash"]["success"] = "Your nickname has been updated.";
}

如果我在昵称字段中添加了一个新昵称,旧昵称仍在标题中:http://prntscr.com/8o2mfx。

因此,为了看到新的昵称,我必须从会话中注销并登录。我怎么能让它瞬间?

对不起,我的英语,我是法国人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-05 18:40:42

因此,您正在从nickname中读取会话值auth,但是它始终是相同的,您从不更改它的值,即使数据库值可能有所不同。

您需要做的是更改它,然后(添加最后一行):

代码语言:javascript
复制
if(!empty($_POST["nickname"]))
{
    $user_id = $_SESSION["auth"] -> id;
    $req = $pdo -> prepare("UPDATE users SET nickname = ?") -> execute([$_POST["nickname"]]);
    $_SESSION["flash"]["success"] = "Your nickname has been updated.";
    // added this line \/
    $_SESSION["auth"] -> nickname = $_POST["nickname"]; 
}

因此,下次当您读取会话值Welcome, <?= $_SESSION["auth"] -> nickname;时,您将得到新的会话值。

只是个加号。您应该在代码中创建一些验证,例如检查在更新过程中是否出现任何错误,这样就不会向用户显示与DB不同的昵称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32955116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档