Inloggen+registreren lukt niet

Status
Niet open voor verdere reacties.

tomdb

Gebruiker
Lid geworden
10 nov 2008
Berichten
417
Hallo,
mijn inlogpagina zegt standaard dat er iets fout is gegaan(foute gegevens), terwijl de gegevens correct zijn ingestuurd, en ook gewoon in de juiste database tabel staan. Hier de code:
PHP:
<?php
	session_start();//begint sessie
	if (!empty ($_POST)){
	//MySQL Database
	//Voor het ophalen van gegevens uit database of te registreren
		$username="mijn_username";
		$password="mijn_password"; 
		$host="mijn_host";
		$dbnaam="mijn_db";
		$db=mysql_connect($host, $username, $password) or die (mysql_error1());
		mysql_select_db($dbnaam, $db) or die (mysql_error());
		//var voor vebinding maken met database
		$query = "SELECT * FROM users
		WHERE email ='" .$_POST["email"] ."'
		AND wachtwoord='". $_POST["wachtwoord"] . "'";
		$result=mysql_query($query, $db) or die("error2");
		
		if (mysql_numrows($result) > 0){
			echo ($result);
			//emailadres gevonden, sla de gegevens op in de session
			$username = $_POST["email"];
			$wachtwoord = $_POST["wachtwoord"];
			session_register("username");
			session_register("wachtwoord");
			//doorsturen:
			header("Location: beveiligd.php");
			exit();
		}else{
			// geen email gevonden of ongeldig wachtwoord:
			$tekst = "U heeft geen geldige gegevens ingevoerd, <a href\"inlog.php\">probeer het opnieuw</a>.";
		die("$tekst");
		}
	}else{
	//pagina is ongeldig aangeroepen, terug naar login:
	header("Location: inlog.php");
	}
Dan het registratieformulier: Er wordt geen tekst getoond, en ook wordt er niks aan de database toegevoegd...
De andere code:
PHP:
<?php
//MySQL Database
//Voor het ophalen van gegevens uit database of te registreren
	$username="mijn_username";
	$password="mijn_password"; 
	$host="mijn_host";
	$dbnaam="mijn_db";
	$db=	 mysql_connect($host, $username, $password) or die (mysql_error());
			 mysql_select_db($dbnaam, $db) or die (mysql_error());//Er wordt verbinding gemaakt met de database of er wordt een fout weergegeven
	/*Hier wordt alles in de database gepompt:D sqlite is vervangen door mysql*/
	if (!empty ($_POST)){
		//eerst wordt gecontroleerd of emailadres al bestaat...
		$email= $_POST["email"];
		$wachtwoord= $_POST["wachtwoord"];
		$query= "SELECT * from users WHERE email='$email';";
		$result= mysql_query($query, $db) or die();
		if (mysql_num_rows($result) > 0) {
		//emailadres is al aanwezig, foutmelding geven
			$tekst = "Dit e-mailadres staat al in de database.\n";
			die($tekst);
		}else{
		//email bestaat nog niet, toevoegen dus
			$query="INSERT INTO users (email, wachtwoord) ";
			$query .= "VALUES ('$email', '$wachtwoord');";
			$result = mysql_query($query, $db) or die ();
			$tekst= "Bedankt voor uw aanmelding. U kunt nu <a href=\"login.php\">inloggen</a>.";
			die($tekst);
		}
	}
?>
Ik hoop dat jullie de fouten eruit kunnen halen, ik zie het even niet:o...
Alvast bedankt:thumb:!
 
Laatst bewerkt:
Echo de query eens naar het scherm, kopieer hem dan, plak hem in het query invoer scherm in PHPMyAdmin en kijk of je resultaten terug krijgt.

Daarnaast wordt het gebruik van session_register() afgeraden, je kunt beter gebruiken:

PHP:
$_SESSION[ 'username' ] = $_POST[ 'email' ];
$_SESSION[ 'wachtwoord' ] = $_POST[ 'wachtwoord' ];

Overigens, heb je daadwerkelijk een functie die mysql_error1() heet? Denk dat dat mysql_error() moet zijn.

PHP:
echo ($result);

Heeft ook weinig zin, $result is een resource, niet iets wat je naar je scherm kunt echoën.

OH, ik zie nu denk ik je fout xD: je gebruikt mysql_numrows() ipv mysql_num_rows()


PHP:
if (!empty ($_POST)){

is niet netjes om te gebruiken, je kunt beter:

PHP:
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {

gebruiken.

EDIT: het is trouwens niet erg netjes om overal die() te gebruiken. Beter kun je gewoon je fouten afvangen.
 
Laatst bewerkt:
Echo de query eens naar het scherm, kopieer hem dan, plak hem in het query invoer scherm in PHPMyAdmin en kijk of je resultaten terug krijgt.

Daarnaast wordt het gebruik van session_register() afgeraden, je kunt beter gebruiken:

PHP:
$_SESSION[ 'username' ] = $_POST[ 'email' ];
$_SESSION[ 'wachtwoord' ] = $_POST[ 'wachtwoord' ];
Veranderd.
Overigens, heb je daadwerkelijk een functie die mysql_error1() heet? Denk dat dat mysql_error() moet zijn.
Ook veranderd:D.

OH, ik zie nu denk ik je fout xD: je gebruikt mysql_numrows() ipv mysql_num_rows()
Mag allebei.
Ik heb de $query geechood en ingevoer bij phpMyAdmin, dit kwam eruit gerold:
#1062 - Duplicate entry '0' for key 1
Alvast bedankt voor de hulp tot nu toe:thumb:!
 
Ik weet niet hoe je erbij komt dat je mysql_numrows() kunt gebruiken? Die functie bestaat helemaal niet.

EDIT: excuses, ik had niet goed gezocht. Die alias mag inderdaad gebruikt worden, maar is wel deprecated (verouderd). Heb je geprobeerd het aan te passen?
 
Laatst bewerkt:
Maar snap jij die foutmelding?
EDIT: Veranderd maar heeft niet geholpen...
 
Laatst bewerkt:
Ik heb de $query geechood en ingevoer bij phpMyAdmin, dit kwam eruit gerold:
#1062 - Duplicate entry '0' for key 1

Welke query heb je nu ingevoerd? Je INSERT-query of je SELECT query? Dit lijkt namelijk de INSERT query te zijn, maar ik bedoelde de SELECT-query uit je inlogformulier...
 
Welke query heb je nu ingevoerd? Je INSERT-query of je SELECT query? Dit lijkt namelijk de INSERT query te zijn, maar ik bedoelde de SELECT-query uit je inlogformulier...
Hmm, had een zeer stomme fout gemaakt, namelijk $password en $wachtwoord gebruik alsof het dezelfde waren:o...Het inlog formulier in gefixed, nu de registratie nog...
 
PHP:
<?php
    $username = "mijn_username";
    $password = "mijn_password"; 
    $host = "mijn_host";
    $dbnaam = "mijn_db";
    $db = mysql_connect( $host, $username, $password ) or die(mysql_error());
          mysql_select_db($dbnaam, $db) or die (mysql_error());
    
    if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ){
        $query = "SELECT * from users WHERE email = '" . $_POST[ 'email' ] . "'";
        $result = mysql_query( $query, $db ) or die();
        if ( mysql_num_rows ( $result ) > 0 ) {
            $tekst = "Dit e-mailadres staat al in de database.\n";
            die($tekst);
        }else{
            $query = "INSERT INTO users (email, wachtwoord) VALUES ( '" . $_POST[ 'email' ] . "', '" . $_POST[ 'wachtwoord' ] . "')";
            $result = mysql_query( $query, $db ) or die ();
            $tekst= 'Bedankt voor uw aanmelding. U kunt nu <a href="login.php">inloggen</a>.';
            die($tekst);
        }
    }
?>

Probeer het eens zo.

Overigens, staat je ID-kolom (ik neem aan dat je die hebt) wel op auto_increment?
 
PHP:
Overigens, staat je ID-kolom (ik neem aan dat je die hebt) wel op auto_increment?[/QUOTE]
Ja, nu wel:D. Het was gisteren de eerste keer dat ik met SQL werkte, dus ik hoop dat je me dat kunt vergeven:o. Wederom bedankt voor alle hulp:thumb:!
 
Nee, dat kan ik je niet vergeven, want ik neem het je niet eens kwalijk! Succes ermee verder! :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan