2016-04-06 8 views
-1

私はPHPとStackOverflowの初心者です!あなたは問題が何を教えてもらえますログイン機能PHP SHA1

function login($user, $password) 
{ 
    $db = new mysqli('127.0.0.1', 'root', 'raspberry', 'extranet'); 
    $db->set_charset('utf8'); 
    $token = ''; 
    if (isset($user) && isset($password) && !isset($_SESSION)) 
    { 
     $query = $db->prepare('SELECT * FROM users WHERE USERNAME = ? AND PASSWORD = ?'); 
     $query->bind_param($user, $password); 
     $res = $query->execute(); 
     if (mysqli_num_rows($res) != 0) 
     { 
      $_SESSION['user'] = $user; 

      $token = rand(85765, 650000); 
      $query = $db->prepare('INSERT INTO tokens VALUES(null, ?, ?);'); 
      $query->bind_param($user, $token); 
      $query->execute(); 

      $_SESSION['token'] = $token; 
     } else { 
      $_SESSION['token'] = 0; 
     } 

     return $_SESSION['token']; 
    } else if (isset($_SESSION['token']) && $_SESSION['token'] != 0 && isset($_SESSION['user'])) 
    { 
     $query = $db->prepare('SELECT * FROM tokens WHERE USERNAME = ? AND TOKEN = ?'); 
     $query->bind_param($_SESSION['user'], $_SESSION['token']); 
     $res = $query->execute(); 
     if (mysqli_num_rows != 0) 
     { 
      return true; 
     } else 
     { 
      return false; 
     } 
    } else 
    { 
     return false; 
    } 
} 

... は、私は私のアプリのログイン機能を作成しようとしましたが、これは動作するようですdoes'nt。 ? 個! P-S:あなたがここに平文パスワードを格納している私はちょうどフランスの

+0

エラーメッセージとは何ですか?何を試しましたか? – Alex2php

+1

SHA1を使用している*** *** ***ハッシュパスワードは、その目的のために根本的に壊れています。使用:http://php.net/manual/en/ref.password.php – Sammitch

+0

私はパスワードを投稿しないように提案しています... :)( 'mysqli(...)') – urban

答えて

0
$query = $db->prepare('SELECT * FROM users WHERE USERNAME = ? AND PASSWORD = ?'); 
$query->bind_param($user, $password); 

よ私の英語のレベルのすみません。 PHPのpassword hashing featuresを見てください。

$token = rand(85765, 650000);

私はあなたの全体のトークンシステムが不要であるかなり確信しているが、それは、don't use rand()なかった場合でも。

+0

ありがとう!私はセッショントークンに関するいくつかの情報を見つけようとしましたが、それはかなり複雑です!その場合、トークンを使用しますか? – lportemo

+0

PHPがこれを行います。あなたが長期的な認証を考えているのでない限り。 [Gatekeeper](https://github.com/psecio/gatekeeper)をチェックしてください。 –