PHP if else语句不起作用

时间:2016-10-15 21:46:25

标签: php if-statement

编辑1 2016年10月16日:

我现在已迁移到PDO ,如果表中的字段为frghfg,则会询问(如我所知)姓名和姓氏,但问题是if-else声明不起作用。

这是“新”login2.php

<?php
<... some other things...>
    $count = $connect->query("SELECT COUNT(*) FROM $tbl_name WHERE username='$username' and pwd='$pwd'")->fetchColumn();

    if($count==1) {
        $_SESSION['username'] = $username;
        $_SESSION['pwd'] = $pwd;
        $checknamesurname = $connect->query("SELECT nome, cognome FROM users WHERE username = '$username'");
        $row = $checknamesurname->fetch(PDO::FETCH_ASSOC);
    }
    else {
        echo "Wrong username and/or password. <a href='./login.php'>Retry</a>";
    }
    if(($row['nome'] == "frghfg") and ($row['cognome'] == "frghfg")) {
        echo "<html>
                <head>
                    <title>Inserisci il tuo nome e il tuo cognome</title>
                </head>
                <body>
                    <b>Inserisci il tuo nome e il tuo cognome</b><br><br>
                    <form action='insertnomecognome.php' method='post'>
                        <label for='nome'>Nome</label>
                        <input type='text' name='nome' size='25' maxlength='32' required/><br><br>
                        <label for='cognome'>Cognome</label>
                        <input type='text' name='cognome' size='25' maxlength='32' required><br><br>
                        <button type='submit' name='nomecognome' class='btn-simple'>Invia</button>
                    </form>
                </body>
            <html>";
    }
    else {
        header("location:login_success.php");
    }
?>

原帖:

我有一个PHP页面(area_utenti.php),只有在您登录时才能看到:在该页面中有一条欢迎消息“Hello username,您已登录! ”。 当有人注册我的网站时,他只会被要求提供用户名,电子邮件和密码。 现在我在注册页面添加名称和姓氏的字段,因为我希望欢迎消息说“Hello Name等等”,但我还想要求已经注册的用户插入他们的姓名和姓氏,所以我认为如果我数据库的用户表中的姓名字段login2.php为{I}字符串,我可以在PHP页面中检查用户登录(==)插入到我在我的网站上进行更改之前注册的每个用户,如果是这种情况,则此PHP页面会重定向到另一个具有在字段中插入名称和姓氏的表单。

所以,问题是: login2.php的新部分对我来说似乎是正确的,所以我不明白为什么当我在登录表单中插入我的凭据时,它不会询问我的姓名,直接转到area_utenti.php,像以前一样,现在出现了一个新问题:当我插入错误的凭证时,它会转到login_success.php,它只是一个字符串,上面写着“登录成功”,这个问题以前没有。

login2.php

<?php
<... some other things...>      
        $sql="SELECT * FROM $tbl_name WHERE username='$username' and pwd='$password'";
        $result=mysql_query($sql);
        $count=mysql_num_rows($result);

    if($count==1){
        $name=mysql_query("SELECT name FROM users WHERE username = '$username'");
        $surname=mysql_query("SELECT surname FROM users WHERE username = '$username'");

        $_SESSION['username'] = $username;
        $_SESSION['pwd'] = $encryptedpwd;
    }
    else {
        echo "Wrong username and/or password";
    }
    if(($name == "frghfg") and ($surname == "frghfg")){ // frghfg is the string that I inserted to every user which registered before the change, I chose that string because nobody has this name or surname in the entire world
        echo "<html>
                <head>
                    <title>Insert your name and surname</title>
                </head>
                <body>
                    <form action=\"nomecognome.php\" method=\"post\"> // nomecognome.php is the page that inserts the fields in the users table and redirects to area_utenti.php when done
                        <label for=\"nome\">Name</label>
                        <input type=\"text\" name=\"nome\" size=\"32\" required/>
                        <label for=\"cognome\">Surname</label>
                        <input type=\"text\" name=\"cognome\" size=\"32\" required><br><br>
                        <button type=\"submit\" name=\"nomecognome\" class=\"submit_button\">Submit</button>
                    </form>
                </body>
            <html>";
    }
    else{
        header("location:login_success.php");
    }
?>

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

下面:

http://127.0.0.1:8890/

您从$name=mysql_query("SELECT name FROM users WHERE username = '$username'"); $surname=mysql_query("SELECT surname FROM users WHERE username = '$username'"); 函数获得的是“结果集”,而不是您在查询中请求的值。

您必须获取值(同样,您只能使用一个查询):

mysql_query()

现在,您拥有$query = "SELECT name, surname FROM users WHERE username = '$username'"; $result = mysql_query($query); $row = mysql_fetch_assoc($result); $row['name']所需的值。

注意,不要使用mysql_ *函数(不推荐使用它们),而是寻找mysqli或PDO。