Avatar billede udvikler Nybegynder
08. november 2005 - 17:41 Der 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 :)
------------------------------------------------------
Avatar billede nizo Nybegynder
08. november 2005 - 18:03 #1
Burde et login system ikke være med session?

<?php
session_start()
include "mysql.php";

if ($_POST[submit]) {

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>";
}

else {
$query = mysql_query("INSERT INTO brugere (user, pass) values ('$_POST[user]','$_POST[pass]')") or die(mysql_erorr());
$row = mysql_fetch_assoc($query);
$username = $row[user];
$pass = $row[pass];
addslashes($username);
addslashes($pass);
session_register(username);
session_register(pass);
}
?>
Avatar billede udvikler Nybegynder
08. november 2005 - 18:08 #2
Fik en fejl, der står at nedenstående er ugyldig kode:

$row = mysql_fetch_assoc($query);

og ved du noget om den sidste ting ? (spørgsmål nr 2)

men du har nu sikkret dig 40 point, lad os se om du kan hjælpe mig med den sidste også :D
Avatar billede nizo Nybegynder
08. november 2005 - 18:11 #3
if (mysql_num_rows($res_find_bruger) finder ud af om den bruger allerede findes.

Er det meningen at den skal oprette en bruger hvis ens login er ugyldig, eller er det bare et "oprette" script?
Avatar billede udvikler Nybegynder
08. november 2005 - 18:15 #4
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.
Avatar billede jakobdo Ekspert
08. november 2005 - 18:16 #5
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());
Avatar billede udvikler Nybegynder
08. november 2005 - 18:19 #6
Af hvad jakobdo?
hvordan skulle den komme derfra og hvordan kan det fixes ?

- forresten opretter den også stadig tomme brugere (uden brugernavn og kodeord)
Avatar billede jakobdo Ekspert
08. november 2005 - 18:45 #7
Fjern echo! :o)
Avatar billede udvikler Nybegynder
08. november 2005 - 18:51 #8
Jamen, bruger nizo's kode nu og 1 tallet er forsvundet det er ikke problemet længere - men tilgengæld det eneste der virker :(

1. hvis man bare trykker submit uden at skrive noget opretter den en "tom" bruger - selvom udskriver: "Du skal skrive et brugernavn" fx

2. Lige når man åbner siden står der "brugeren findes allerede" det burde den kun hvis brugeren i forvejen findes EFTER man har trykket submit

3. resten for jeg ikke fejl i men intet virker desværre.
Avatar billede nizo Nybegynder
08. november 2005 - 19:13 #9
Unskyld, jeg er lidt træt idag :)


<?php
include "mysql.php";

if ($_POST[submit]) {

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());

}

}
?>
Avatar billede udvikler Nybegynder
08. november 2005 - 20:08 #10
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 ?
Avatar billede nizo Nybegynder
08. november 2005 - 22:28 #11
Det lyder meget underligt, skriv præcis den kode du bruger, evt et link saa jeg kan se det med egne øjne :o)
Avatar billede udvikler Nybegynder
09. november 2005 - 07:28 #12
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";
}
}
?>

<form action="" method="post">
Brugernavn: <input type="text" name="brugernavn"><br>
Kodeord: <input type="password" name="kodeord"><br>
<input type="submit" name="opret" value="Opret">
</form>


(det er den if der tjekker om brugeren findes der skal være elseif)


kan du hjælpe med det ?
Avatar billede udvikler Nybegynder
09. november 2005 - 19:17 #13
Fandt selv ud af det også..
Nå, men det er vidst på tide at lukke spørgsmålet, hvis du vil have point skal du lægge et svar :)

lægger også selv et og tager 40 af dem, så for du 30, okay ? for jeg fandt jo næsten ud af det hele selv ;0)
Avatar billede nizo Nybegynder
10. november 2005 - 14:25 #14
No problem :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester