ik heb een login gemaakt via gegevens (lognaam & paswoord) uit een database. Maar wanneer ik een goeie combinatie in geef wordt ik niet doorgestuurd naar mijn beveiligde pagina... en weet niet wat ik verkeerd doe. ik krijg geen enkele parse error, warning of notice... kan iemand me helpen...
hieronder volgt het script...
jaja natuurlijk er staat een ; achter hoor
en anders zou ik een parse error krijgen hé, maar ik krijg niets... mijn script loopt goed, maar ik word gewoon niet naar mijn "beveiligde" pagina doorgestuurd, en vind echt de fout niet
nee, ik krijg niets van errors te zien, niet als het script gestart wordt en ook niet als ik mijn gegevens ga verzenden door op "inloggen" te klikken...
er moet toch ergens iet verkeerd zijn waardoor mijn login niet werkt hé...
Die ob_start is niet nodig omdat er nog geen output is, voordat de headers geset worden. Ik vermoed eerder dat je sql-query geen resultaten ophaalt. Vervang je query eens door hetvolgende en kijk als er een extra foutmelding wordt gegeven:
$sql = "select * from login where lognaam like '".mysql_real_escape_string($_POST["login"])."' and paswoord like md5('".mysql_real_escape_string($_POST["paswoord"])."')" or die(mysql_error());
maar hoe komt het dan dat die niet ingevuld raakt...
ik vind niet echt iets dat ik verkeerd doe... :$
sorry kleine rechtzetting, had verkeerde var gebruikt, ik krijg die fout van login niet... ik word nog steeds gewoon niet doorgestuurd naar mijn beveiligde pagina, maar krijg verder niets te zien...
doe het eens anders en druk alleen de login naam in je where en dan met mysql_fetch_array ga je ingevulde wachtwoord controleren met de database voor het doorsturen
anders gebruik een or die(mysql_error()); om te debuggen dan
Mag ik je trouwens adviseren om niet te werken met een mengelmoesje van engels/nederlands zoals 'paswoord' en duidelijkere namen te kiezen dan 'lognaam'. Werkt een beetje verwarrend ;x
na nog wat verder gezocht te hebben ben ik tot de constatie gekomen dat:
1) mijn $sql variable (de select dus) de correcte gegevens krijgt vanuit mijn forumuliertje...
maar...
2)dat wanneer ik bv een echo doe van $login (= die van mijn formulier) daar niets blijkt in te zitten...
xHTML en CSS zijn erg belangrijk voor een website. Het is niet alleen netjes, maar zoekrobots hebben er ook baat bij. Het heeft ook een positieve invloed op de positie van de pagina's in de zoekresultaten.
Het is niet goed om alles voorgekauwd te krijgen. Je leert er op deze manier totaal niets van. Wil je een goede scripter worden, probeer dan het dan zelf eerst op te lossen.
ik heb in die volgorde gewerkt, maar toen was het nog gewoon html, css, javascript, php en mysql...
en om dit op te lossen ben ik al 3 weken bezig, gelijk wat ik probeer kom ik op hetzelfde resultaat...
ik probeerde al om mijn tabel opnieuw te maken, mijn script helemaal opnieuw op te bouwen en toch kom ik iedere keer op dezelfde "fout" terecht...
mochten mijn gegevens nu niet uit de db gehaald worden zou ik het nog kunnen begrijpen, maar alles lijkt goed te lopen tot er daadwerkelijk verander moet worden van pagina (naar de beveiligde pagina worden gegaan dus) dat gebeurd langs geen kanten en dat en dat alleen versta ik niet
<?php
if (!$rLogin = @mysql_query("SELECT id FROM login WHERE gebruikersnaam = '" . mysql_real_escape_string($_POST['sGebruikersnaam']) . "' AND wachtwoord = '" . md5($_POST['sWachtwoord']) . "'"))
{
// query is mislukt.
}
else
{
if (@mysql_num_rows($rLogin) > 0)
{
(array) $aLogin = @mysql_fetch_assoc($rLogin);
$aLogin = array_map('stripslashes', $aLogin);
$_SESSION['aLogin'] = array();
$_SESSION['aLogin']['iGebruiker'] = $aLogin['id'];
// sla ook ip, etc. op. Je hebt meerdere tabellen nodig. O.a. een tabel waarin je loginsessies opslaat.
// Heb je alles goed geregistreerd in de sessie, dan mag je naar de beveiligde pagina. Let op: op elke beveiligde pagina controleer je of de persoon nog correct is ingelogd.
}
else
{
// Combinatie gebruikersnaam / wachtwoord onjuist.
}
}
?>
<?php
if(!$rLogin=@mysql_query("SELECT id FROM login WHERE gebruikersnaam = '".mysql_real_escape_string($_POST['sGebruikersnaam'])."' AND wachtwoord = '".md5($_POST['sWachtwoord'])."'"))
// sla ook ip, etc. op. Je hebt meerdere tabellen nodig. O.a. een tabel waarin je loginsessies opslaat.
// Heb je alles goed geregistreerd in de sessie, dan mag je naar de beveiligde pagina. Let op: op elke beveiligde pagina controleer je of de persoon nog correct is ingelogd.
ik heb idd ook al eens die like vervangen door =, maar dit geeft me nog steeds hetzelfde resultaat... de overgang naar de beveiligde pagina gaat niet...
wanneer ik dit ga echo'en... zie ik dat mijn login en wachtwoord daadwerkelijk zijn ingevuld...
Waarom stuurt het script me dan niet door naar de beveiligde pagina?
$sql = "select * from login where naam like '".mysql_real_escape_string($_POST["login"])."'
and paswoord like md5('".mysql_real_escape_string($_POST["wachtwoord"])."')";
Uitleg: SQLcode schrijf je altijd met hoofdletters, uitgezonderd tabel- en veldnamen. De MD5functie van MySQL kun je beter alleen gebruiken wanneer je een eigen waarde wilt coderen:
Bijv.
SELECT MD5(naam) FROM login WHERE id = 1
Omdat je het wachtwoord codeert, is de functie mysql_real_escape_string() op die plaats niet nodig.
Overige opmerkingen:
Selecteer liever alleen de kolommen die je echt nodig hebt. SELECT * is doorgaans langzamer dan wanneer je de kolommen selecteert, die je wilt gaan gebruiken.
Geef door het eerste teken aan wat voor type variabele het is:
$sNaam = 'Henri'; (string)
$iTeller = 1; (integer)
$rLogin = een resource, bijv. query (resource)
etc.
Hoe staat het wachtwoord in de database? Staat het wachtwoord gecodeerd in de database, of staat het als platte tekst? In jouw geval zal de laatstgenoemde niet werken, omdat je paswoord vergelijkt met de gecodeerde invoer.