1

私は、MySQL データベースにユーザーを保存する登録/サインインを可能にする基本的なログイン システムに取り組んでいます。人々が登録できるように、ユーザー名とハッシュ化されたパスワードをDBに保存します。誰かがログインすると、ユーザー名とパスワードが一致したかどうかに応じて、成功メッセージまたはエラー メッセージが表示されます。

私の問題はログイン機能にあります。現在そこにある成功メッセージを表示する代わりに、ユーザー セッションを作成し、サイトのログイン専用セクションにリダイレクトする必要があります。私はそれを行う方法がわからない...

これが私のコードです:

ログイン・登録機能

function login($username, $password) {
    $userpass = sha1($password);
    $result = mysqli_query($con, "SELECT * FROM members WHERE username='$username' AND password='$userpass'");
    while($row = mysqli_fetch_array($result)) {
        $success = true;
    }
    if($success == true) {
        echo 'Success!';
    } else {
        echo '<div class="alert alert-danger">Oops! It looks like your username and/or password are incorrect. Please try again.</div>';
    }
} // END LOGIN FUNCTION

function register($username, $password) {
    $userpass = sha1($password);

    // Check if Username Exists
    $result = mysqli_query($con,"SELECT * FROM members WHERE username='$username'");
    while($row = mysqli_fetch_array($result)) {
        $userexist = 1;
    }
    if($userexist > 0) {
        echo '<div class="alert alert-danger">Sorry, it looks like that username is already taken.</div>';
    } else {
        $newmember = "INSERT INTO members SET username='$username', password='$userpass'";
        if(mysqli_query($con,$newmember)) {
            echo '<div class="alert alert-success">Congrats! You can now log in using your username and password</div>';
        }
    }
}
4

5 に答える 5

0

それは、コードの残りの部分をどのように構築しているかに大きく依存します。HTML ページを作成し、PHP 関数をどこにでも追加するだけの場合は、コードのさまざまな場所で次のような単純なものを使用できる可能性があります。

$loggedIn = login($username, $password)

次に、ログインが true または false を返すようにする必要があります。次に、ルーティング構造は $loggedIn に基づいてさまざまな決定を行うことができ、ページにはさまざまなレイアウトとコンテンツを表示できます。

これは、プログラミング スタイルの観点から採用するのに最適なスタイルではありませんが、アイデアが得られるかもしれません。コードをどのように構築しているかについてさらに詳細を追加すると、より良い答えが得られるはずです

于 2013-08-22T13:23:08.357 に答える
0
   session_start();

    if($_SERVER["REQUEST_METHOD"] == "POST") {

$myusername=addslashes($_POST['username']);
$mypassword=addslashes($_POST['password']); 

    $sql="SELECT id FROM admin WHERE username='$myusername' and passcode='$mypassword'";
$result=mysql_query($sql);
    $row=mysql_fetch_array($result);


$active=$row['active']; 
    $count=mysql_num_rows($result); 
       if($count==1) {
              session_register("myusername"); 
                  $_SESSION['login_user']=$myusername;

              header("location: welcome.php"); 
         } 
       else { 
              $error="Your Login Name or
          Password is invalid";
            }
   } 
于 2013-08-22T13:42:36.600 に答える
0

Usman Allamの答えの変形を与えるために、 mysqli_num_rows($result) が >= 1 であるかどうかを単純に確認する方がはるかに簡単だと思いました

function login($username, $password) {
    $userpass = sha1($password);
    $result = mysqli_query($con, "SELECT * FROM members WHERE username='$username' AND password='$userpass'");
    if(mysqli_num_rows($result) >= 1) {
        $_SESSION['username'] = $username; 
        //redirect to home page
    } else {
        echo '<div class="alert alert-danger">Oops! It looks like your username and/or password are incorrect. Please try again.</div>';
    }
} // END LOGIN FUNCTION
于 2019-07-08T19:05:54.830 に答える