2012-12-08 5 views
-2

Je travaille sur un système de connexion de base. J'ai utilisé beaucoup de sources et de nombreux endroits du code sont des extraits d'autres systèmes de connexion en ligne. Le problème est que je suis simplement et gracieusement obtenir une page complètement vierge lors de la saisie du nom d'utilisateur et mot de passe dans loginpage.html et quand il redirige vers ce fichier, BLANK PAGE.Vérification Login.php - Page vierge?

<?php 
error_reporting(E_ALL^E_NOTICE); 
include 'connectingshit.php'; 

//Basically naming a session and starting one 
session_name('litLogin'); 

//The cookie is going to live for 2 weeks 
session_set_cookie_params(2*7*24*60*60); 

//Now we actually start the session 
session_start(); 
ob_start(); 
if($_SESSION['id'] && !isset($_COOKIE['RemainLoggedIn']) && !$_SESSION['rememberMe']) 
{ 
    // If you are logged in, but you don't have the cookie (browser restarts) 
    // and you have not checked the rememberMe checkbox: 
    $_SESSION = array(); 
    session_destroy(); 
    // Destroy the session 
} 

if(isset($_POST['submit'])) 
{ 
    //I hope I know what I am doing, this is supposed to hold our errors. 
    $errors = array(); 

    if(!$_POST['username'] || !$_POST['password']) 
     $errors[] = 'All the fields must be filled in buddyboy!'; 
    if(!count($errors)) 
    { 
     //Assigning the input form shit to the variables/strings or wtf they are 
     $tinkerbells_username = $_POST['username']; 
     $tinkerbells_password = $_POST['password']; 
     $_POST['rememberMe'] = (int)$_POST['rememberMe']; 

     // We remove all dangerous characters (!!!!) WTF? Escaping them "WOW"... 
     $tinkerbells_username = stripslashes($tinkerbells_username); 
     $tinkerbells_password = stripslashes($tinkerbells_password); 
     $tinkerbells_username = mysqli_real_escape_string($conn, $tinkerbells_username); 
     $tinkerbells_password = mysqli_real_escape_string($conn, $tinkerbells_password); 

     $row = mysqli_fetch_assoc('SELECT id, username, password FROM members WHERE username = "$niloquieroser_username" AND password = "$niloquieroser_password"'); 

     //Does basically the username exist when $row lookes for it in the database 
     if(($row['username']) && ($niloquieroser_username == $tinkerbells_username && $niloquieroser_password == $tinkerbells_password)) 
     { 
    //Now fortunately or unfortunatley if it did work and everything is fine 
    //We can continue..... 
    $_SESSION['username'] = $row['username']; 
     $_SESSION['id'] = $row['id']; 
    $_SESSION['rememberMe'] = $_POST['rememberMe']; 

    //We store some data in the session 
    setcookie('RemainLoggedIn',$_POST['rememberMe']); 
    //cookie gets created 
    } 
    else $errors[]=("Wrongs username or/and password!"); 
    } 
    header("Location: success.html"); 
    exit; 
} 
ob_end_flush(); 
?> 
+0

Alors, quelle est l'erreur? s'il vous plaît mentionner l'erreur afin que nous puissions savoir où chercher – behz4d

+0

Pouvez-vous indenter votre code, s'il vous plaît? Merci! – Ryan

+1

vérifier le fichier error_log – GBD

Répondre

2
$row = mysqli_fetch_assoc('SELECT id, username, password FROM members WHERE username = "$niloquieroser_username" AND password = "$niloquieroser_password"'); 

cordes MySQL devrait être simple cité; vous appelez mysqli_fetch_assoc sur une chaîne, pas un objet de requête; vos variables ne seront pas interpolées, puisque la chaîne PHP utilise des guillemets simples. Pas que vous deviez les interpoler de toute façon; utiliser des déclarations préparées.

Aussi, s'il vous plaît hachez vos mots de passe darn.

+0

@omullumo: L'accent mis sur le fonctionnement, et non sur la sécurité, est la raison pour laquelle 50% des failles de sécurité existent. Ne fais pas ça. Quoi qu'il en soit, vérifiez votre journal des erreurs. Je parie que vous avez 'display_errors' désactivé. – Ryan

+0

Je pense que je me souviens de mysql permettant des guillemets doubles sur les valeurs de chaîne. –

0

Tout d'abord, réparez votre requête. Vous ne pouvez pas incorporer des valeurs php dans les chaînes sans définir vos chaînes avec des guillemets doubles:

$query = "SELECT id, username, password FROM members WHERE username = '$niloquieroser_username' AND password = '$niloquieroser_password'"; 

Vous voulez utiliser mysqli_query() pour obtenir un ensemble mysqli_result. Ensuite, vous pouvez boucle à travers cette façon:

$result = mysqli_query($link, $query); 
while($row = mysqli_fetch_assoc($result)) { 
    //echo $row['username']; 
    ... 
} 

Si vous parvenez à obtenir votre script fonctionne correctement, notez qu'il semble que même si le nom d'utilisateur/mot de passe est invalide, vous les redirigez encore success.html. Vous devez mettre header("Location: success.html"); à l'intérieur du if qui vérifie le jeu de résultats pour une ligne uniquement et renvoyer le message d'erreur si la ligne n'a pas été trouvée.