2016-11-04 24 views
-1

私はログインページを作成し、特定のユーザーのデータベースから4列1行までのテーブル形式でデータを表示し、テーブルデータを更新してからログアウトできるようにします。誰もがスクリプトでこれで私を助けることができます。私はPHP、MySQLを使用してそれを行う必要があります。私はこれまで試しましたが、私はこれを超えて何をすべきかはわかりません。ログインページをPHPと編集

<html> 
<form action="login.php" method="post"> 
    Username: <input type="text" name="username"><p> 
    Password: <input type="password" name="password"><p> 
       <input type="submit" value="Log in!" > 
</form>   

<?php 

session_start(); 

$username = $_POST['username']; 
$password = $_POST['password']; 

if ($username&&$password) 
{ 
    $connect = mysql_connect("localhost", "root", "") or die("Couldn't connect to the database!"); 
    mysql_select_db("login") or die("Couldn't find database"); 

    $query = mysql_query("SELECT * FROM users WHERE username='$username'"); 

    $numrows = mysql_num_rows($query); 

    if ($numrows!==0) 
    { 
     while($row = mysql_fetch_assoc($query)) 
     { 
      $dbusername = $row['username']; 
      $dbpassword = $row['password']; # code... 
     } 

     if ($username==$dbusername&&$password==$dbpassword) 
     { 
      echo "You are logged in!";# 
      @$_SESSION['usernme'] = $username; 
     } 
     else 
      echo "Your password is incorrect!"; 
    # code... 
    } 
    else 
     die("That user doesn't exists!"); 

} 
else 
    die("Please enter a username and password!") 
?> 
+1

'mysql_connect' < - ***非推奨の' mysql_ * '拡張子を使用しないでください。これはPHP ***から削除されました。代わりに –

+0

'while'ループの中に' if($ username == $ dbusername &= $ password == $ dbpassword) 'を入れて' PDO'や 'mysqli'を使用しました。別のこととして、このコードやその一部を使用しないでください。それは全く危険です。 –

+0

いくつかのコメント:1.決してパスワードをDBハッシュ(&塩)に保管しないでください。 2. MYSQLを使用しないでください.PDOを使用するか、SQLインジェクション用に広く開いてください。 3. Echo out(ブルートフォース攻撃に使用される可能性があります)4. PHP、HTML、MySQL、javascriptなどを学んでください。 – Cagy79

答えて

0

なぜ直接ではなく、ユーザー名とパスワードの組み合わせが正しいかどうMySQLはチェックしてみましょうか?

$query = mysqli_query("SELECT * FROM users WHERE username='" . $username . "' AND password = '" . $password . "'");

のみmysqli_num_rows($query) == 1場合、有効なログインがあります。 1行以上は不可能です。

+0

どのような違いがありますか? '' $ var ''と ''"。$ var。 "''はどちらも同じことをします。さらに、残りのクエリはOKです。 1つは一致する必要があります。 –

+0

私は、ユーザー名とパスワードの組み合わせをチェックする作業をMySQLに任せていました。引用符は文字列から変数をエスケープする習慣です。 ;-) – Koen

+0

ここからの経験から話す:あまりにも広い/不明瞭な質問に答えることは、大きな虫の巣を開く傾向があり、深いウサギの穴を追いかける危険もあります。私は本当にこれでうまくいきたいと思います。 –