2016-08-04 21 views
0

さて、このログインページでは、私がしたいのは、ログインして、私にも "index.php"を送ることだけです。私は私の電子メールが正しいとパスワードとすべてが良いことを知っている。それは実際には私を "index.php"に送るのではなく、同じページにとどまるだけです。私はPHPに新しいとおそらく何か愚かですが、どんな助けも大歓迎です。してくださいありがとう!何$_SESSION['usr_id']にありますが、あなたからid列になることをログインページを作る方法PHPはセッションで動作します。

if(isset($_SESSION['usr_id']) && $_SESSION['usr_id'] != "") { 

注:

if(isset($_SESSION['usr_id'])!="") { 

あなたはこれをしたい:あなたがこれを持っている:)

<link rel="stylesheet" href="styles.css" /> 
 
<?php 
 
session_start(); 
 

 
if(isset($_SESSION['usr_id'])!="") { 
 
    header("Location: index.php"); 
 
} 
 

 
include_once 'dbconnect.php'; 
 

 
//check if form is submitted 
 
if (isset($_POST['login'])) { 
 

 
    $email = mysqli_real_escape_string($conn, $_POST['email']); 
 
    $password = mysqli_real_escape_string($conn, $_POST['password']); 
 
    $result = mysqli_query($conn, "SELECT * FROM users WHERE email = '" . $email. "' and password = '" . md5($password) . "'"); 
 

 
    if ($row = mysqli_fetch_array($result)) { 
 
     $_SESSION['usr_id'] = $row['id']; 
 
     $_SESSION['usr_name'] = $row['name']; 
 
     header("Location: index.php"); 
 
     $successmsg = "SWEET YOU'RE IN!"; 
 
     //echo "success"; 
 
    } else { 
 
     $errormsg = "Incorrect Email or Password!!!"; 
 
    } 
 
} 
 
?> 
 

 
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>PHP Login Script</title> 
 
    <meta content="width=device-width, initial-scale=1.0" name="viewport" > 
 
    <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" /> 
 
</head> 
 
<body> 
 

 

 
    <div class="container-fluid"> 
 
     <!-- add header --> 
 
     <div class="navbar-header"> 
 
     </div> 
 
     <!-- menu items --> 
 
     <div class="collapse navbar-collapse" id="navbar1"> 
 
      <ul class="navbar"> 
 
       <li class="active"><a href="login.php">Login</a></li> 
 
       <li><a href="register.php">Sign Up</a></li> 
 
      </ul> 
 
     </div> 
 
    </div> 
 

 

 
<div class="container"> 
 
    <div class="row"> 
 
     <div class="col-md-4 col-md-offset-4 well"> 
 
      <form role="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="loginform"> 
 
       <fieldset> 
 
        <legend>Login</legend> 
 
        
 
        <div class="form-group"> 
 
         <label for="name">Email</label> 
 
         <input type="text" name="email" placeholder="Your Email" required class="form-control" /> 
 
        </div> 
 

 
        <div class="form-group"> 
 
         <label for="name">Password</label> 
 
         <input type="password" name="password" placeholder="Your Password" required class="form-control" /> 
 
        </div> 
 

 
        <div class="form-group"> 
 
         <input type="submit" name="login" value="Login" class="btn btn-primary" /> 
 
        </div> 
 
       </fieldset> 
 
      </form> 
 
      <span class="text-danger"><?php if (isset($errormsg)) { echo $errormsg; } ?></span> 
 
      <span class="text-success"><?php if (isset($successmsg)) { echo $successmsg; } ?></span> 
 
     </div> 
 
    </div> 
 

 
</div> 
 

 
</body> 
 
</html>

+0

*** [MD5パスワードハッシュ](http://security.stackexchange.com/questions/19906/is-md5-considered-insecure)***を使用するべきではありません。本当にPHPの[パスワードのセキュリティを処理するための組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)を参照してください。ハッシュする前に[パスワードを逃さないでください](http://stackoverflow.com/q/36628418/1011527)を確認するか、他のクレンジングメカニズムを使用してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+0

[Little Bobby](http://bobby-tables.com/)によると*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。](http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php)*** [MySQLi](http://php.net/manual)の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)ステートメントについて学びます。 /en/mysqli.quickstart.prepared-statements.php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! [それを信じていない?](http://stackoverflow.com/q/38297105/1011527) –

+0

私はそれが動作したい!ハハはすべてです。 –

答えて

1

データベース。このような列が存在するかどうかはコンテキストからは分かりませんので、最初のリダイレクト(つまり、資格情報を確認した直後)の前に実際に値があることを再度確認してください。

サイドノート:パスワードをハッシュするのにMD5()を使用しないでください。 MD5は、パスワードハッシュを望むほど安全ではありません。

+0

私はあなたを愛しています!!!!! –

+0

待ちます!あなたの最初の答えが働いた!その人に投稿してください! –

+0

上部のコードは変更されていません。説明と補足は、現在のシステムの不安定さに関する追加の詳細、文脈、および重大な警告です。したがって、彼らは一番上の即時修正に加えて滞在すべきです。 – VoteyDisciple

関連する問題