搜索已登录用户的名称

时间:2015-01-18 01:20:34

标签: php mysql database function mysqli

我有一个网站,在这个网站的标题中我有两个链接,一个登录,另一个登记。我想要的是,当用户登录时,这两个链接消失了,所以我可以让其中一个说“Hello”,然后是控制面板的链接。喜欢“你好。问题是它没有搜索用户的名字。它只是没有显示名称。用户使用电子邮件和密码登录,功能usuarioEstaLogado()是一个确认用户已登录。这是代码:

   function nomeUsuario($conexao){
        $usuarios = array();
        $query = "select nome from usuarios where email = '{$mail}'";
        $resultado = mysqli_query($conexao, $query);
        while($usuario = mysqli_fetch_assoc($resultado)){
            array_push($usuarios, $usuario);
        }
        return $usuarios;
    }


<?php
session_start();
function usuarioEstaLogado() {
    return isset($_SESSION["usuario_logado"]);
}

<div class="container container-twelve">

        <header>
            <div class="twelve columns top remove-bottom">
                <div class="three columns offset-by-nine">
                    <?php 
                        if(usuarioEstaLogado()){
                            $usr = nomeUsuario($conexao);
                            echo" <p>Ola " . $usr['nome'];
                            "<a href='admin'> Painel de Controle</a></p>";
                        }
                    ?>
                    <p><a href="cadastro.php">Cadastre-se</a> | 
                    <a href="login.php">Login <span class="icon-user"></span></a></p>
                </div>

1 个答案:

答案 0 :(得分:0)

在您的顶级功能

    $query = "select nome from usuarios where email = '{$mail}'";

$mail未定义,您尚未将其从全局中提取,也未将其传递给nomeUsario函数,因此查询可能不会返回任何内容。

您的nome功能应该接受电子邮件。另外,您可能想要db中的第一个匹配,而不是所有匹配,例如:

function nomeUsuario($conexao, $mail) {
    $query = "select nome from usuarios where email = '{$mail}'";
    $resultado = mysqli_query($conexao, $query);
    if ($usuario = mysqli_fetch_assoc($resultado)) {
        return $usuario;
    } else {
        return false;
    }
}

当你打电话时,你需要一个电子邮件地址,我猜*是在$_SESSION

$usr = nomeUsuario($conexao,$_SESSION['usuario_email']); //or whatever the name may be :-)
echo" <p>Ola " . $usr['nome'];