2016-04-04 13 views
0

ImはユーザーのパスワードをSQL Server 2008 R2にハッシュします。 登録が正常に行われます。ハッシュされたパスワードは、このコードを正しく保存されていますPDO odbcは、ハッシュされたパスワード文字列を返します

if ($stmt = $db->conn->prepare("SELECT * FROM $db->DB_NAME.dbo.SGU_USUARIO WHERE EMAIL = :EMAIL")) { 

     $stmt->bindParam(':EMAIL', $email, PDO::PARAM_STR); 
     $stmt->execute(); 
     $resultado = $stmt->fetch(PDO::FETCH_ASSOC); 

     if(!empty($resultado)){ 

      if (password_verify($password, $resultado['CONTRASENA'])) { 
        // Password is correct! 
        // Get the user-agent string of the user. 
        $user_browser = $_SERVER['HTTP_USER_AGENT']; 
        // XSS protection as we might print this value 
        $user_id = preg_replace("/[^0-9]+/", "", $user_id); 
        $_SESSION['user_id'] = $user_id; 
        // XSS protection as we might print this value 
        $resultado['USUARIO'] = preg_replace("/[^a-zA-Z0-9_\-]+/", 
                   "", 
                   $resultado['USUARIO']); 
        $_SESSION['username'] = $resultado['USUARIO']; 
        $_SESSION['login_string'] = hash('sha512', 
           $resultado['CONTRASENA'] . $user_browser); 
        // Login successful. 
        return true; 
       } 
} 

これは常にあるため、ユーザー情報が到着している何らかの理由でfalseを返す:私は以下の私は、ログインスクリプトを実行したい

$password = password_hash($password, PASSWORD_DEFAULT); 
    // Insert the new user into the database 
    $insert_stmt = $db->conn->prepare("INSERT INTO $db->DB_NAME.dbo.SGU_USUARIO (USUARIO, EMAIL, CONTRASENA, RUT_ALUMNO, ID_PERFIL)" 
      . " VALUES (:USUARIO, :EMAIL, :CONTRASENA, :RUT_ALUMNO, :ID_PERFIL)"); 

    $insert_stmt->bindParam(':USUARIO', $usuario, PDO::PARAM_STR); 
    $insert_stmt->bindParam(':EMAIL', $email, PDO::PARAM_STR); 
    $insert_stmt->bindParam(':CONTRASENA', $password, PDO::PARAM_STR); 
    $insert_stmt->bindParam(':RUT_ALUMNO', $rut_alum, PDO::PARAM_STR); 
    $insert_stmt->bindParam(':ID_PERFIL', $id_perfil, PDO::PARAM_INT); 

    if (! $insert_stmt->execute()) { 
     $error_msg = '<div class="alert alert-danger"><strong>Error!</strong> Registro de usuario fallido.</div>'; 
    }else{ 
     $error_msg = '<div class="alert alert-success">Usuario registrado exitosamente.</div>'; 
    } 

電子メールとハッシュされたパスワードに問題があります。ハッシュされた電子メールフィールドが問題に到着しているいくつかの理由

array (size=6) 
    'ID_USUARIO' => string '1' (length=1) 
    'USUARIO' => string 'joshe.onate' (length=11) 
    'EMAIL' => string '�|����� |�����!���' (length=20) 
    'CONTRASENA' => string '�|�����`|�����!�������! �������RUT_ALUMNO�����!�������!���' (length=60) 
    'RUT_ALUMNO' => string '166604168' (length=9) 
    'ID_PERFIL' => string '2' (length=1) 
|� |�! 
|�`|�!!RUT_ALUMNO!! 

:私は最初のクエリで取得するユーザー情報からのvar_dump()を行う場合

私はこれを取得します。

先進的にお手伝いいただきありがとうございます。

答えて

0

私の問題は、SQl Serverでは、これらのフィールドがMAX varcharであると言いました。 私はそれをvarchar(100)に残し、すべてが正しく返されました。

関連する問題