26. maj 2005 - 00:21Der er
19 kommentarer og 1 løsning
check af kodeord i php og sql
Hejsa. Jeg står og er i gang med et lille projekt, som sædvanligt, og vanen tro har jeg brug for lidt hjælp.
Jeg har en tabel der hedder kode, med et felt der hedder ord. Dette indeholder to forskellige ord.
JEg har brug for noget PHP kode, som kan checke om det brugeren har tastet ind matcher et af de to ord, og reagere forskelligt alt efter hvilket af de to der er det indtastede. Ligeledes skal det også komme med en stor fed fejl hvis kodeordet ikke matcher et af de to.
Kan det evt gøres som en funktion der kaldes fra en form, og sættes som en cookie eller noget? Det vil være lidt træls at have password feltet på siden hele tiden, og jeg vil egentligt helst nøjes med en enkelt side, så folk ikke bare kan smutte forbi password fnktionen med et bogmærke...
Skriv endelig hvis i har brug for mere information.
Hvis der er to ord i et felt, så må de vel være adskildt fra hinanden på en eller anden måde. Kan du ikke lige vise hvordan? Er der komma imellem ordene eller sådan noget?
hrm, den fik jeg vist ikke lige forklaret godt nok der...
I min database har jeg en tabel, som hedder kode. I den er der en en overskrift der hedder ord. Og i den der der to celler, som indeholder hhv master og user som indhold.
if ($ord == "master") { // Gør det der skal gøres for $ord = "master" } elseif ($ord == "user") { // Gør det der skal gøres for $ord = "user" } else { echo "en stor fed fejl"; } ?>
Hvis det ikke var det, så må du gerne forklare lidt mere om hvad det er du skal bruge det til.
tjah, en af årsagerne er at det ene password skal skiftes på ugentlig basis, og det er nemmere at udfylde en form end at ændre i html /php koden hver uge.
Ok, men så må du jo foruden de to passwords også have en ekstra oplysning for hver som indikere hvilket som tilhøre master og hvilket som er for user. Har du det? Og hvad hedder det så?
øh.... Ikke andet end placeringen i tabellen... det første er til master adgang, det andet er til user adgang.. hvis man henter den ind i et array, vil $ord[0] være = master og $ord[1] være = user. eller hvad?
Du har ingen garanti for at de altid vil komme ud i samme rækkefølge. Det er op til databasesystemet selv at bestemme rækkefølgen efter hvad der er mest effektivt på det givne tidspunkt. :^|
Jeg ville tilføje en ny søjle som f.eks. kunne hedde "bruger", og så ville jeg ændre din søjle "ord" til at hedde noget i stil med "password".
Så bør du ændre tabellen "kode" til at den indeholder to søjler, med navnene "Bruger" og "Password", og med værdierne:
Bruger Password Række 1: master master Række 2: user user
Lige nu skal der altså bare stå det samme i begge felter i hver række. Senere nå du vil ændre kodeord for master-brugeren så er det kun værdien i feltet Password som skal ændres:
Bruger Password Række 1: master nyt-master-kodeord Række 2: user user
Det er vigtigt at vi får denne tabel på plads før vi kan gå videre med resten.
Helt fint. Jeg når desværre ikke at arbejde ret meget mere på problemet her i aften.
Har du prøvet at forbinde fra PHP til en database før? Hvis du har, kan du så ikke lige skrive hvordan? - sådan at jeg rammer rigtigt i første omgang. :^)
ok, jeg sidder og roder lidt med det lige nu. og her er hvad jeg er kommet frem til so far. Her skal lige siges, at jeg endnu ikke har indarbejdet den anden søjle vi lavede, men det planlægger jeg. Jeg kan dog ikke få mine if sætninger til at virke. Uanset hvad jeg skriver i formen, så skriver den bare you do not have acces to this page. Så jeg har fumlet med overførslen af dataene fra formen. *suk* Det er alt for lang tid siden jeg sidst har rodet med php og sql, og jeg har endda fået smidt mine php manualer ud i et flytterod. ÆV!
<html> <body bgcolor="black" text="white"> <? global $HTTP_POST_VARS
$kodeord=$HTTP_POST_VARS['adgangskode'];
function passcheck() { $db = mysql_connect("databaseurl","username","password"); mysql_select_db("databasename",$db); $foresp = mysql_query("SELECT * FROM kode"); while ($data = mysql_fetch_row($foresp)){ $ordet[] = $data[0]; $user[] = $data[1]; } echo $kodeord; if ($kodeord == $ordet[0]) { echo "welcome master";
} if ($kodeord == $ordet[1]) { echo "welcome user";
} else { echo "you do not have acces to this page.";
<html> <body bgcolor="black" text="white"> <? global $HTTP_POST_VARS; global $_POST;
$kodeord = $_POST["adgangskode"];
function passcheck() { $kodeord = $_POST["adgangskode"]; $db = mysql_connect("db.cyperdesign.dk","gb0432","lightfoce"); mysql_select_db("gb0432",$db); $foresp = mysql_query("SELECT * FROM kode WHERE ord = '$kodeord'"); while ($data = mysql_fetch_row($foresp)){ $ordet[] = $data[0]; $user[] = $data[1]; }
if ($user[0] == "admin") { echo "welcome master"; } if ($user[0] == "user") { echo "welcome user"; } if (($user[0] != "user") && ($user[0] != "admin")) { echo "you do not have acces to this page."; }
}
Den giver de rigtige resultater alt efter hvilket kodeord jeg smider i den :D
Tak for hjælpen, der skal nok komme mange flere dumme spørgsmål fra mig i de næste dage. Smid lige et svar, så jeg ka dele nogen points med dig :D
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.