2012-03-31 13 views
0

kann ich nicht meinen Kopf nur noch um oop wickeln, so dass ich jetzt mit prozeduralen Codierung kleben.Anmeldeskript Anmeldung nicht in

Ok, also die Registrierung und Auth Teil der Skripte funktionieren, ist es, dass die Anmeldung Stellplätze fit und ich bin nicht sicher, wo mein Fehler ist.

<?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> 

Ich bin nicht sicher, ob ich die SQL-Felder aus der db buchen muss. Ich weiß, dass die Mitgliederseite dieses hat:

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


?> 

Ich weiß nicht, wo der Benutzername herkommt, noch habe ich es in meinem db haben. Ich habe versucht, es in ein Feld zu verwandeln, das ich habe, aber kein Glück.

+2

wow, versuchen Sie nur relevante Code gepostet wird, nicht die gesamte Datei ... – Michal

+0

Welche Fehler geben ist das? –

+1

sollten Sie die $ _SESSION Globale diese Art und Weise '$ _SESSION nicht überschreiben = mysqli_fetch_array' sollten Sie die SQL-Ergebnis Schleife durch und speziell auf Ihre Sitzungsschlüssel/Werte hinzufügen. auch irgendein Code nach dem 'header (" Location: login.php ");' wird ausgeführt, Sie müssen den Würfel hinzufügen; nach einer Header-Weiterleitung –

Antwort

0

Zunächst einmal: Sie sollten den mysql Eingang entkommen.

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

sollte

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

Zweitens, ich bin ziemlich sicher, Sie nicht tun sollten

$_SESSION = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC); 

aber eher so etwas wie

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

Die $ _SESSION [ 'Benutzername' könnte aus einem früheren Code t stammen Hut hat es gesetzt.

+0

Also, wenn ich die $ _SESSION ['userdata'] auf ein passendes Feld in der db setzen, sollte es funktionieren? oder sollte ich bestimmtes Feld? Um zu der Benutzer-ID zu gelangen, habe ich zwei andere Felder davor. Spezifisch: innittime, id, cid wo innittime specifc auf den Hintergrundserver ist, ID ist die Personen versteckte ID pro Mitglied aktualisiert, und CID ist die spezifische ID, die sie sich mit anmelden müssten. – BBuchanan

+0

die ID wäre in '$ _SESSION ['userdata'] ['id']' in meinem Beispiel. – LasseValentini

0

Nun, das ist eine lange gedreht, und es könnte einige Hantieren mit, um es zu arbeiten, gehen aber vielleicht versuchen

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"); 
} 

zu

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"); 
} 

ändern und dann zu den Mitgliedern Seite, versuchen

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

zu

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

vielen dank – BBuchanan

Verwandte Themen