2011-03-07 3 views
0

dbConfig.phpImpossible de se connecter

<?php 
$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die; 

$dbname = 'charitydatabase'; 
mysql_select_db($dbname); 
echo("Successfully Connected to ". $dbname . " !"); 
mysql_query($sql); 

?> 

register.php

<?php 

     // dbConfig.php is a file that contains your 
     // database connection information. This 
     // tutorial assumes a connection is made from 
     // this existing file. 
     include ("dbConfig.php"); 


//Input vaildation and the dbase code 
     if ($_GET["op"] == "reg") 
    { 
    $bInputFlag = false; 
    foreach ($_POST as $field) 
     { 
     if ($field == "") 
    { 
    $bInputFlag = false; 
    } 
     else 
    { 
    $bInputFlag = true; 
    } 
     } 
    // If we had problems with the input, exit with error 
    if ($bInputFlag == false) 
     { 
     die("Problem with your registration info. " 
    ."Please go back and try again."); 
     } 

    // Fields are clear, add user to database 
    // Setup query 
    $q = "INSERT INTO `dbuser` (`username`,`password`,`email`) " 
     ."VALUES ('".$_POST["username"]."', " 
     ."PASSWORD('".$_POST["password"]."'), " 
     ."'".$_POST["email"]."')"; 
    // Run query 
    $r = mysql_query($q); 

    // Make sure query inserted user successfully 
    if (!mysql_insert_id()) 
     { 
     die("Error: User not added to database."); 
     } 
    else 
     { 
     // Redirect to thank you page. 
     Header("Location: register.php?op=thanks"); 
     } 
    } // end if 


//The thank you page 
     elseif ($_GET["op"] == "thanks") 
    { 
    echo "<h2>Thanks for registering!</h2>"; 
    } 

//The web form for input ability 
     else 
    { 
    echo "<form action=\"?op=reg\" method=\"POST\">\n"; 
    echo "Username: <input name=\"username\" MAXLENGTH=\"16\"><br />\n"; 
    echo "Password: <input type=\"password\" name=\"password\" MAXLENGTH=\"16\"><br />\n"; 
    echo "Email Address: <input name=\"email\" MAXLENGTH=\"25\"><br />\n"; 
    echo "<input type=\"submit\">\n"; 
    echo "</form>\n"; 
    } 
     // EOF 
     ?> 

login.php

<?php 
     session_start(); 
     // dBase file 
     include "dbConfig.php"; 

     if ($_GET["op"] == "login") 
    { 
    if (!$_POST["username"] || !$_POST["password"]) 
     { 
     die("You need to provide a username and password."); 
     } 

    // Create query 
    $q = "SELECT * FROM `dbuser` " 
     ."WHERE `username`='".$_POST["username"]."' " 
     ."AND `password`=PASSWORD('".$_POST["password"]."') " 
     ."LIMIT 1"; 
    // Run query 
    $r = mysql_query($q); 

    if ($obj = @mysql_fetch_object($r)) 
     { 
     // Login good, create session variables 
     $_SESSION["valid_id"] = $obj->id; 
     $_SESSION["valid_user"] = $_POST["username"]; 
     $_SESSION["valid_time"] = time(); 

     // Redirect to member page 
     Header("Location: member.php"); 
     } 
    else 
     { 
     // Login not successful 
     die("Sorry, could not log you in. Wrong login information."); 
     } 
    } 
     else 
    { 
//If all went right the Web form appears and users can log in 
    echo "<form action=\"?op=login\" method=\"POST\">"; 
    echo "Username: <input name=\"username\" size=\"15\"><br />"; 
    echo "Password: <input type=\"password\" name=\"password\" size=\"8\"><br />"; 
    echo "<input type=\"submit\" value=\"Login\">"; 
    echo "</form>"; 
    } 
     ?> 

Problème 1: Capable d'ajouter un utilisateur à la base de données. Mais je reçois un msg d'erreur après déboguer le code:

Avertissement: Impossible de modifier les informations d'en-tête - têtes déjà envoyés par (output started C: \ xampp \ htdocs \ Connexion \ dbConfig.php: 4) en C: \ xampp \ htdocs \ Connexion \ register.php en ligne 49

problème 2: et erreur enregistrement du champ de mot de passe dans la base de données.

Problème3:

Impossible de se connecter.

S'il vous plaît aidez-moi à résoudre la question ci-dessus, tq!

+0

btw, votre style de codage est horrible, s'il vous plaît d'abord apprendre à écrire le bon code ... pas la bonne attention de '' 'et' '' '' dans le code entier – diEcho

Répondre

1

SOLUTION

  1. utilisation ob_start() en haut de la page où u écrire header('');
  2. DonT, utilisez la fonction mysql PASSWORD(), UTILISATION md5() ou toute autre fonction décodé de php
  3. pour stocker le mot de passe dans la base de données mis datatype de mot de passe déposé à varchar et longueur 255

ce que cela signifie

if (!$_POST["username"] || !$_POST["password"]) 
     { 
     die("You need to provide a username and password."); 
     } 

écrivent à la place

if (empty($_POST["username"]) || empty($_POST["password"])) 
{ 
     die("You need to provide a username and password."); 
} 

et prendre soin de mysql injection

+0

Je suis en train d'essayer de reproduire et de continuer à obtenir l'erreur? - Utilisé simple INSERT pour tester et échoué. Je me demande aussi ce que le 'mysql_query ($ sql);' est dans le 'dbConfig.php' – BarclayVision

2

Retirez l'écho de la dbConfig.php, vous ne pouvez pas utiliser la fonction header() après un écho. (l'en-tête us utilisé pour rediriger dans register.php)

+0

nous pouvons utilisez, en utilisant 'ob_start' – diEcho

+0

Vrai, mais non recommandé Vous devriez séparer le code et l'affichage, il ne devrait donc pas nécessairement y avoir de texte avant la balise header(). –