Foutmelding bij het inloggen

Status
Niet open voor verdere reacties.

woeshie

Gebruiker
Lid geworden
5 jul 2014
Berichten
27
Ik krijg onderstaande foutmelding als ik wil inloggen op basis van de script dit ik heb overgenomen van youtube:
Warning: mysql_result() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/Bida/Includes/users.php on line 28

Wat ik wil doen is checken of email en wachtwoord overeenkomen met de database. Wat moet ik aanpassen? Een nieuwe script, gaat misschien niet werken aangezien ik heel veel heb gecodeerd op basis van deze opzet.
<?php

function user_data($userid) {
$data = array();
$userid = (int)$userid;

$func_num_args = func_num_args();
$func_get_args = func_get_args();

if ($func_num_args > 1) {
unset($func_get_args[0]);

$fields = '`' . implode('`, `', $func_get_args) . '`';
$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM 'Vraag' WHERE 'userid' = $userid"));


return $data;
}
}

function logged_in() {
return (isset($_SESSION['userid'])) ? true : false;
}

function user_exists($email) {
$email = sanitize($email);
$query = mysql_query("SELECT COUNT('userid' FROM 'Vraag' WHERE 'email' = '$email'");
return (mysql_result($query, 0) == 1) ? true : false;
}

function userid_from_email($email) {
$email = sanitize($email);
return mysql_result(mysql_query("SELECT 'userid' FROM 'Vraag' WHERE 'email' = '$email'"), 0, 'userid');
}

function login($email, $password) {
$userid = userid_from_email($email);

$email = sanitize($email);
return (mysql_result(mysql_query("SELECT COUNT('userid') FROM 'Vraag' WHERE 'email' = '$email' and 'wachtwoord' = $password'"), 0) == 1) ? $userid : false;

}
?>
 
Het gaat om de functie:

function user_exists($email) {
$email = sanitize($email);
$query = mysql_query("SELECT COUNT('userid' FROM 'Vraag' WHERE 'email' = '$email'");
return (mysql_result($query, 0) == 1) ? true : false;
}

Kun je die eens vervangen door dit?

function user_exists($email) {
$email = sanitize($email);
$query = mysql_query("SELECT email FROM Vraag WHERE 'email' = '$email'");
return (mysql_num_rows($query) == 1) ? true : false;
}
 
Okay de foutmelding is inderdaad weg. Thanks!
Maar ik blijf op dezelfde pagina ipv naar loggedin.php? Hoe kan dat nou?

if (empty($_POST) === false) {
$email = $_POST['email'];
$password = $_POST['password'];
}

if (empty($email) === true || empty($password) === true) {
$errors[] = 'fout';
} else if (user_exists($email) === false) {
$errors[] = 'onbekend';
} else {
$login = login($email, $password);
if ($login === false) {
$errors[] = 'onbekende gebruikers';
} else {
$_SESSION['userid'] = $login;
header('Location: loggedin.php');
exit();

}
print_r($errors);
}
 
Laatst bewerkt:
Je print_r zit te hoog. De fout zal in de bovenste twee condities zitten, maar die krijg je niet te zien omdat je error output alleen in de onderste conditie geprint wordt.
Zet je print_r eens onder dat laatste } wat je hierboven post.
 
Hey Thanks, ik leer echt veel van jou. ik wist niet eens wat dat print_r was, okay het geeft nu de volgende foutmelding array (), dus ergens heb ik een lege array vermoed ik.
 
ik heb deze array gevonden die leeg is, wat vul ik in:
function user_data($userid) {
$data = array();
$userid = (int)$userid;

$func_num_args = func_num_args();
$func_get_args = func_get_args();

if ($func_num_args > 1) {
unset($func_get_args[0]);

$fields = '`' . implode('`, `', $func_get_args) . '`';
$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM 'Vraag' WHERE 'userid' = $userid"));


return $data;
}
}
 
Ik snap hoe je denkt. Maar $data = array(); is niet je probleem. Dat heet initialiseren. Daar is de array nog leeg, maar op de vierde regel van onder zie dat hij inhoud krijgt vanuit de database.

De reden dat je enkel in beeld: Array() ziet is omdat Print_R($errors) de inhoud van de array $errors wil laten zien. Maar daar blijkt niets in te zitten. En dus zie je alleen Array().

De voorwaarden om aan te komen bij de regel header('Location: loggedin.php'); zijn eromheen programmeert. Ten eerste mogen $email en $password niet leeg zijn en tot slot mag het resultaat van de functie login() geen false teruggeven. Dus één van die drie voorwaarden is niet gehaald. Daar moet je het zoeken.
 
okay, thanks je bent echt goed. Mocht je het leuk vinden om te coachen aan huis in ruil voor een warme maaltijd ofzo iets, dan hoor ik graag van je. Ik heb een pittig project voor mezelf geformuleerd. En site nabouwen als Funda ;-)
 
Dank voor je aanbod, maar helaas coach ik niet aan huis. Wat je wel kunt doen, wanneer jij er tijd voor hebt, is online leren. Een leuke gratis cursus php vind je op: http://www.codecademy.com/en/tracks/php

Succes met je project in elk geval. Have funda(n)! :d
 
thanks, codeacademy heb ik al gedaan maar php is niet makkelijk te volgen via die site. :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan