如果条件不起作用

时间:2018-03-28 08:33:10

标签: php if-statement

我是学生,我有一个项目要做。我正在为会员页面工作,但这是问题:无论登录是什么,我总是被重定向到管理页面。

 <?php
 function logUser() {

  require( './connexion.php' );

    $sql_user = 'SELECT * FROM tgn_users WHERE login="' . $_POST[ 'login' ] . '"';

$req = mysqli_query( $connexion, $sql_user )or die( mysqli_error( $connexion 
 ) );

 if ( mysqli_num_rows( $req ) > 0 ) {

 $row = mysqli_fetch_assoc( $req );

if ( Bcrypt::checkPassword( $_POST[ 'mdp_user' ], $row[ 'mdp_user' ] ) ) {

    if($row['login']='admin'){

        header( 'Location: ../../admin/' );

    }else{

        $_SESSION[ 'nom_user' ] = $row[ 'nom_user' ];
        $_SESSION[ 'prenom_user' ] = $row[ 'prenom_user' ];
        $_SESSION[ 'id_user' ] = $row[ 'id_user' ];
        //$lifetime = 60*60*24*30;
        //setcookie(session_name($_SESSION['nom_user']), session_id($_SESSION['id_user']),time()+$lifetime,'/');
        header( 'Location: ../../profile.php' );
    }

}else {
    $_SESSION[ 'message' ] = "Erreur de log et/ou de pwd";
    header( "Location: " . $_SERVER[ 'HTTP_REFERER' ] );

}
}

 }?>

1 个答案:

答案 0 :(得分:2)

您使用if($row['login']='admin'){,它始终为真,因为=用于为变量赋值。

尝试:if($row['login'] == 'admin'){,如果两个值相等,您需要测试==。如果您还需要检查两个变量的类型,可以使用===

查看此内容以获取更多详细信息:The 3 different equals

我将在这里添加@twinfriends的评论:因为您的查询很明显,它可以接受SQL注入:看看这个以便更好地理解http://bobby-tables.com/

尝试使用prepare语句!