08. november 2005 - 17:41Der er
12 kommentarer og 2 løsninger
2 spørgsmål til mit loginsystem
Hejsa, jeg er igang med at lave et login system, men kunne godt tænke mig at vide to ting:
------------------------------------------------------ 1. Hvorfor virker mit php tjek ikke, der er 2 fejl i det. for det første udskriver et 1 tal midt i det hele ? :S og for det andet udskriver den brugeren findes allerede lige fra man åbner dokumentet.
her er filen:
<?php include "mysql.php";
if ($_POST[submit]) {
if ($_POST[user] == "") { echo "Du mangler at skrive et brugernavn"; echo "<br>"; }
if ($_POST[pass] == "") { echo "Du mangler at skrive et kodeord"; echo "<br>"; } }
$res_find_bruger = mysql_query("SELECT * FROM brugere where user='$_POST[user]'") or die (mysql_error()); if (mysql_num_rows($res_find_bruger) == 1){ echo "Brugeren findes allerede"; echo "<br>"; }
else { echo mysql_query("INSERT INTO brugere (user, pass) values ('$_POST[user]','$_POST[pass]')") or die(mysql_erorr()); } ?> ------------------------------------------------------ 2. jeg kunne godt tænke mig at vide hvordan man kan tjekke om det brugernavn man har skrevet passer med et brugernavn i databasen - og det samme med kodeord selvfølgelig. det er noget mig en if sætning og LIKE men er ikk sikker :)
3.
Og som en bonus for i 10 point hvis i kan gøre sådan så det også virker med sessions :) ------------------------------------------------------
if (empty($_POST[user])) { echo "Du mangler at skrive et brugernavn"; echo "<br>"; }
if (empty($_POST[pass])) { echo "Du mangler at skrive et kodeord"; echo "<br>"; } }
$res_find_bruger = mysql_query("SELECT * FROM brugere where user='$_POST[user]'") or die (mysql_error()); if (mysql_num_rows($res_find_bruger) == 1){ echo "Brugeren findes allerede"; echo "<br>"; }
Altså den burde tjekke om nogle felter er tomme, hvis ikke de er tomme tjekker den om de indtastede oplysninger findes i mysql databasen, og hvis de ikke gør burde den bare oprette brugeren, altså et almindeligt oprette script :)
men forresten er den der fejl med at den udskriver "Brugeren findes allerede" hvis man bare klikker på submit uden at skrive noget der stadig.
Dit 1 tal kommer nok fra denne linie: echo mysql_query("INSERT INTO brugere (user, pass) values ('$_POST[user]','$_POST[pass]')") or die(mysql_erorr());
if (empty($_POST[user]) || empty($_POST[pass])) { echo "Du mangler at skrive et brugernavn"; echo "<br>"; }
$res_find_bruger = mysql_query("SELECT * FROM brugere WHERE user = '$_POST[user]'") or die (mysql_error()); if (mysql_num_rows($res_find_bruger) == 1){ echo "Brugeren findes allerede"; echo "<br>"; }
else { mysql_query("INSERT INTO brugere (user, pass) VALUES ('$_POST[user]','$_POST[pass]')") or die(mysql_erorr());
Jamen nu har jeg lavet systemet helt fra starten af igen og nu virker alt, har også lavet login systemet, og der er også sessions i. Men der er kun én ting der ikke virker helt efter hensigten. Efter brugeren er oprettet skriver den "brugeren findes allerede" - altså brugeren er oprettet og det hele virker, men den skriver at brugeren ikke findes :S hvorfor det ? koden er den du har lavet lige oven over dette indlæg. Og den sidste ting er at hvis man skriver et brugernavn og/eller kodeord som er oprettet så skriver den brugeren findes allerede 2 gange lige efter hindanden :) brugeren bliver heldigvis ikke oprettet men hvorfor skriver den det to gange ?
Nu er det sådan at jeg igen har prøvet lidt selv og det gik heldigvis fremad. Jeg har fundet ud af at ved at indsætte en elseif istedet for bare en if på linie 12 vil mine problemer løses, er testet på et andet dokument, men den giver en fejl her: enexpected T_ELSE
dokument:
<?php include "mysql.php";
if ($_POST[opret]) {
if (empty($_POST[brugernavn]) || empty($_POST[kodeord])) { echo "Du mangler et eller flere felter"; echo "<br>"; }
$res_find_bruger = mysql_query("SELECT * FROM brugere WHERE brugernavn = '$_POST[brugernavn]'") or die (mysql_error()); if (mysql_num_rows($res_find_bruger) == 1){ echo "Brugeren findes allerede"; echo "<br>"; } else { mysql_query("INSERT INTO brugere (brugernavn, kodeord) VALUES ('$_POST[brugernavn]','$_POST[kodeord]')") or die(mysql_erorr()); echo "Du er nu oprettet"; } } ?>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.