2012-03-31 6 views
0

私はまだ頭の中で頭を包むことができません。だから私は手続き型のコーディングをしています。ログインスクリプトがログインしていません

[OK]を

、そのスクリプトの登録や認証部分は、それはそれでログインしフィット感をピッチと私はエラーがどこにあるかわからないです、仕事します。

<?php 
include ('database_connection.php'); 
if (isset($_POST['formsubmitted'])) 
{ 
    // Initialize a session: 
    session_start(); 
    $error = array();//this aaray will store all error messages 
    if (empty($_POST['e-mail'])) 
    { 
    //if the email supplied is empty 
    $error[] = 'You forgot to enter your Email '; 
    } 
    else 
    { 
    if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['e-mail'])) 
    { 
     $Email = $_POST['e-mail']; 
    } 
    else 
    { 
     $error[] = 'Your EMail Address is invalid '; 
    } 
    } 
    if (empty($_POST['Password'])) 
    { 
    $error[] = 'Please Enter Your Password '; 
    } 
    else 
    { 
    $Password = $_POST['Password']; 
    } 
    if (empty($error))//if the array is empty , it means no error found 
    { 
    $query_check_credentials = "SELECT * FROM users WHERE (email ='$Email' AND cpassword='$Password') AND code IS NULL"; 
    $result_check_credentials = mysqli_query($dbc, $query_check_credentials); 
    if(!$result_check_credentials) 
    { 
     //If the QUery Failed 
     echo 'Query Failed '; 
    } 
    if (@mysqli_num_rows($result_check_credentials) == 1) 
    //if Query is successfull A match was made. 
    { 
     $_SESSION = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC);//Assign the result of this query to SESSION Global Variable 
     header("Location: page.php"); 
    } 
    else 
    { 
     $msg_error= 'Either Your Account is inactive or Email address /Password is Incorrect'; 
    } 
    } 
    else 
    { 
    echo '<div class="errormsgbox"> <ol>'; 
    foreach ($error as $key => $values) 
    { 
     echo '<li>'.$values.'</li>'; 
    } 
    echo '</ol></div>'; 
    } 
    if(isset($msg_error)) 
    { 
    echo '<div class="warning">'.$msg_error.' </div>'; 
    } 
    /// var_dump($error); 
    mysqli_close($dbc); 
} // End of the main Submit conditional. 



?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Login Form</title> 





<style type="text/css"> 
body { 
font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif; 
font-size:12px; 
} 
    .registration_form { 
margin:0 auto; 
width:500px; 
padding:14px; 
} 
label { 
width: 10em; 
float: left; 
margin-right: 0.5em; 
display: block 
} 
.submit { 
float:right; 
} 
fieldset { 
background:#EBF4FB none repeat scroll 0 0; 
border:2px solid #B7DDF2; 
width: 500px; 
} 
legend { 
color: #fff; 
background: #80D3E2; 
border: 1px solid #781351; 
padding: 2px 6px 
} 
.elements { 
padding:10px; 
} 
p { 
border-bottom:1px solid #B7DDF2; 
color:#666666; 
font-size:11px; 
margin-bottom:20px; 
padding-bottom:10px; 
} 
a{ 
color:#0099FF; 
font-weight:bold; 
} 

/* Box Style */ 


.success, .warning, .errormsgbox, .validation { 
border: 1px solid; 
margin: 0 auto; 
padding:10px 5px 10px 60px; 
background-repeat: no-repeat; 
background-position: 10px center; 
font-weight:bold; 
width:450px; 

} 

.success { 

color: #4F8A10; 
background-color: #DFF2BF; 
background-image:url('images/success.png'); 
} 
.warning { 

color: #9F6000; 
background-color: #FEEFB3; 
background-image: url('images/warning.png'); 
} 
.errormsgbox { 

color: #D8000C; 
background-color: #FFBABA; 
background-image: url('images/error.png'); 

} 
.validation { 

color: #D63301; 
background-color: #FFCCBA; 
background-image: url('images/error.png'); 
} 



</style> 

    </head> 
    <body> 


    <form action="login.php" method="post" class="registration_form"> 
<fieldset> 
<legend>Login Form </legend> 

    <p>Enter Your username and Password Below </p> 

    <div class="elements"> 
    <label for="name">Email :</label> 
    <input type="text" id="e-mail" name="e-mail" size="25" /> 
    </div> 

    <div class="elements"> 
    <label for="Password">Password:</label> 
    <input type="password" id="Password" name="Password" size="25" /> 
    </div> 
    <div class="submit"> 
    <input type="hidden" name="formsubmitted" value="TRUE" /> 
    <input type="submit" value="Login" /> 
    </div> 
    </fieldset> 
    </form> 
    Go Back to <a href="#">Account Verification on sign up</a> 
    </body> 
    </html> 

dbからSQLフィールドを送信する必要があるかどうかはわかりません。 私はメンバーページを知っているが、これを持っている:

<?php 
ob_start(); 
session_start(); 
if(!isset($_SESSION['Username'])){ 
    header("Location: login.php"); 
} 


?> 

私は、ユーザー名がどこから来ているかわからない、また私は私のデシベルでそれを持っています。私はフィールドに変更しようとしましたが、運はありません。

+2

すごい、唯一の関連コードサンプル、全体ではなくファイルを投稿してみてください... – Michal

+0

どのようなエラーを与えるのでしょうか? –

+1

このように$ _SESSION Globalを '$ _SESSION = mysqli_fetch_array'に上書きしないでください.SQLの結果をループしてセッションキー/値を追加する必要があります。 'header(" Location:login.php ");の後の任意のコードも実行され、dieを追加する必要があります。ヘッダーのリダイレクト後 –

答えて

0

第1オフ:mysql入力をエスケープする必要があります。

$query_check_credentials = "SELECT * FROM users WHERE (email ='$Email' AND cpassword='$Password') AND code IS NULL"; 

$query_check_credentials = "SELECT * FROM users WHERE (email =".mysqli_real_escape_string($Email)." AND cpassword=".mysqli_real_escape_string($Password).") AND code IS NULL"; 

第二に、私はあなたが

$_SESSION = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC); 

むしろ

$_SESSION['userdata'] = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC); 

のようなものの$ _SESSIONを[すべきではないかなり確信しているべきです'Username']は以前のコードからのものかもしれない帽子はそれを設定しました。

+0

したがって、 $ _SESSION ['userdata'] をdbの一致するフィールドに設定した場合、正常に動作するはずです。または私は特定の分野ですか? ユーザーIDを取得するには、その前に2つのフィールドがあります。具体的には innittime、id、cid ここで、innittimeはバックグラウンドサーバーに固有であり、idはメンバーごとに更新される隠された人物IDであり、cidはログインする必要がある特定のIDです。 – BBuchanan

+0

私の例では、idは '$ _SESSION ['userdata'] ['id']'にあります。 – LasseValentini

0

まあ、これはロングショットであり、それはいくつかは、それが働いて取得すると周りいじる取る、多分その後

if (@mysqli_num_rows($result_check_credentials) == 1) 
//if Query is successfull A match was made. 
{ 
    session_register("userdata"); 
$_SESSION['userdata'] = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC);//Assign the result of this query to SESSION Global Variable 
    header("Location: page.php"); 
} 

if (@mysqli_num_rows($result_check_credentials) == 1) 
//if Query is successfull A match was made. 
{ 
    $_SESSION = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC);//Assign the result of this query to SESSION Global Variable 
    header("Location: page.php"); 
} 

を変更しようとすると、メンバーのかもしれませんページ、

ob_start(); 
session_start(); 
if(!isset($_SESSION['Username'])){ 
    header("Location: login.php"); 
} 

を変更してみてくださいそれは

ob_start(); 
session_start(); 
if(!isset($_SESSION['Username']) && !isset($_SESSION['userdata'])){ 
    header("Location: login.php"); 
} 
+0

ありがとう – BBuchanan

関連する問題