Hallo,
Ik zet bovenin de broncode van sommige webpagina's:
<?php require_once 'auth.php'; ?>
Dit doe ik omdat ik wil dat alleen gebruikers die ingelogd zijn op de pagina mogen komen...
Bij de browser Mozilla Firefox 3, doet alles het prima. Alleen als naar de pagina ga met Windows Internet Explorer, dan werkt mijn Javascript menu niet volledig, en is de div daarboven met mijn logo erin helemaal uitgerekt naar onderen, waardoor de logo's onder elkaar staan.
De functie werkt wel, de pagina is beveiligd, alleen past het ongewenst mijn lay-out aan in IE. In Mozilla is alles oké.
Deze problemen wil ik natuurlijk graag verhelpen, misschien heeft een van jullie een idee wat er aan de hand kan zijn?
Dit heeft niets te maken met je PHP code, maar des te meer met je HTML/CSS.
Zorg er in eerste instantie voor dat je pagina valide HTML is (HTML validator), grote kans dat dat nu nog niet het geval is. Mochten de problemen dan nog niet opgelost zijn, dan zou je eventueel CSS hacks toe kunnen passen om je pagina er in IE ook goed uit te laten zien. Probeer dit echter tot het laatste moment uit te stellen, in veel gevallen is dat namelijk niet eens nodig.
/*Check of geen enkele variabelen leeg is, is er wel een leeg.
*Dan krijg je een foutmelding.*/
if (empty($id) || empty($user) || empty($pass)) {
session_unset();
session_destroy();
header ('refresh: 3; url=index.php');
die ('Your session is not allowed');
/*Als magic_quotes uitstaat zet dan addslashes bij de variabelen neer.*/
} elseif (!get_magic_quotes_gpc()) {
$user = addslashes($user);
$pass = addslashes($pass);
}
/*Codeer de variabelen.*/
$pass = addslashes($pass);
$user = addslashes($user);
/*Table contact is hier gemaakt en checkt of de variabelen
*overeenkomen met die van de table.*/
$sql = "SELECT id, username, password " .
"FROM users " .
"WHERE id='$id' " .
"AND username='$user' " .
"AND password='$pass'";
$result = mysql_query($sql, $conn)
or die ('Could not check up user account; ' . mysql_error());
/*Als het in de database niet overeenkwam wordt er hier een fout gemeldt.*/
if (($row = mysql_fetch_array($result)) == 0) {
session_unset();
session_destroy();
header ('refresh: 3; url=index.php');
die ('Session data incorrect');
} else {
/*Alles klopte maak je alles klaar voor het beeld(Wat er nu nog maar eentje is.*/
$user = stripslashes(base64_decode(stripslashes($user)));
}
Je zegt dat je layout alleen vervormt als je auth.php include? Laat eens zien hoe en waar je dat doet, want het lijkt me sterk dat de inhoud van auth.php hier iets mee te maken heeft...
Persoonlijke mening: Een slecht, heel erg slecht en oud achterhaald script. Wat een ellende!
addslashes() gebruik je nooit en te nimmer, er is geen enkele reden om de data in je database te gaan verknallen. En met deze rottige functie gaat dat wel gebeuren. Gebruik mysql_real_escape_string() om userinput te beveiligen, daarmee verknal je de boel niet.
Het achtelijke broertje van addslashes(), stripslashes(), heb je dan ook niet meer nodig. Je zet geen onzin in je database, dan hoef je deze onzin er ook niet meer uit te halen.
session_unset() is eveneens flink achterhaald en kan voor flinke bugs zorgen wanneer je $_SESSION gebruikt. En anno 2008 hoor je die te gebruiken voor je sessies...
Ps. Een wachtwoord haal je nooit uit de database en zet je al helemaal nooit in een sessie. In de query doe je een vergelijking met het wachtwoord en daarmee ben je klaar.
Je zegt dat je layout alleen vervormt als je auth.php include? Laat eens zien hoe en waar je dat doet, want het lijkt me sterk dat de inhoud van auth.php hier iets mee te maken heeft...
Helemaal bovenin de broncode van de webpagina.
pgFrank schreef op 04.10.2008 19:53
Persoonlijke mening: Een slecht, heel erg slecht en oud achterhaald script. Wat een ellende!
addslashes() gebruik je nooit en te nimmer, er is geen enkele reden om de data in je database te gaan verknallen. En met deze rottige functie gaat dat wel gebeuren. Gebruik mysql_real_escape_string() om userinput te beveiligen, daarmee verknal je de boel niet.
Het achtelijke broertje van addslashes(), stripslashes(), heb je dan ook niet meer nodig. Je zet geen onzin in je database, dan hoef je deze onzin er ook niet meer uit te halen.
session_unset() is eveneens flink achterhaald en kan voor flinke bugs zorgen wanneer je $_SESSION gebruikt. En anno 2008 hoor je die te gebruiken voor je sessies...
Ps. Een wachtwoord haal je nooit uit de database en zet je al helemaal nooit in een sessie. In de query doe je een vergelijking met het wachtwoord en daarmee ben je klaar.
Bedankt Frank!
Ik zal alles wel proberen te gaan veranderen, of zelfs opnieuw doen. :P