M@rkµs Skrevet 9. februar 2005 Del Skrevet 9. februar 2005 Å, jeg får det ikke til... Jeg er en ivrig nybegynner som har fått til et login- script, men jeg greier ikke å ha flere en én bruker om gangen - Jeg har stilt samme spørsmål på flere andre forum, så dette blir siste forsøk... Altså: Jeg har laget et lite innloggings script, men greier ikke å få til slik at jeg kan ha flere brukere. Scrpitet ser slik ut: Index.php: <html> <form method='post' action='login_ok.php'> Brukernavn :: <input type='text' name='brukernavn' size='14'>¨ <br> Passord :: <input type='password' name='passord' size='14'><br> <input type='submit' name='login' value='Login'> </html> -------------------------------------------------------------------------------- config.php: <?php $bruker = "Fredrik"; $bruker = "Webmaster"; $pass = "start"; $pass = "john"; ?> -------------------------------------------------------------------------------- login_ok.php: <?php include("config.php"); if($_POST[brukernavn] == ""){ echo"Brukernavnet er ikke skrevet"; // sjekker om brukernavnet er skrevet. } if($_POST[passord] == ""){ echo"Passordet er ikke skrevet"; // sjekker om passord er skrevet. } if($_POST[brukernavn] == "$bruker"){ // sjekker om brukernavn passer. if($_POST[passord] == "$pass"){ // sjekker om passord passer. // bruker vidresendes header("Location: default.php?brukernavn=$_POST[brukernavn]&passord=$_POST[passord]"); } } else { echo"Du skrev inn feil brukernavn eller passord."; } ?> -------------------------------------------------------------------------------- default.php <?php if($_GET[brukernavn]) { ?> <html> <head> <title>Index</title> </head> <body bgcolor="#F5F5F5"> <?php echo" Velkommen $_GET[brukernavn]"; ?> </body> </html> <?php } else { echo"Brukernavn korrupt. Visning av side misslyktes. Forsøk å logge på en gang til."; } ?> -------------------------------------------------------------------------------- Det som skjer er at det bare er det brukernavnet som står sist (Webmaster) og passordet som står sist (john) som virker. Skriver jeg f.eks. Fredrik på brukernavnet og start i passordfeltet blir det feilmelding. Hvordan kan jeg ha flere brukere samtidig i dette scriptet? - På forhånd takk for all hjelp dere vil gi en nybegynner! Lenke til kommentar
jorgis Skrevet 9. februar 2005 Del Skrevet 9. februar 2005 $bruker = "Fredrik"; setter først variabelen $bruker til "Fredrik". Deretter endrer du variabelen til å ha verdien "Webmaster". Det kan du løse ved å sette $bruker2 = "Webmaster", og sjekke verdien til $bruker2 samtidig som du sjekker $bruker. Samme gjelder for passordene. Lenke til kommentar
M@rkµs Skrevet 10. februar 2005 Forfatter Del Skrevet 10. februar 2005 $bruker = "Fredrik"; setter først variabelen $bruker til "Fredrik". Deretter endrer du variabelen til å ha verdien "Webmaster". Det kan du løse ved å sette $bruker2 = "Webmaster", og sjekke verdien til $bruker2 samtidig som du sjekker $bruker. Samme gjelder for passordene. Prøvde men fikk feilmelding, så jeg har antagelig misforstått det du egentlig mente... Kunne du vist meg hvordan koden blir? På forhånd takk! Lenke til kommentar
Christian_ Skrevet 10. februar 2005 Del Skrevet 10. februar 2005 (endret) Du kan jo legge de inn i et array og hente de ut derifra $info = array( "Fredrik" => "start", "Webmaster" => "john"); og hente de ut med: $info['brukernavn'] deretter eller en foreach løkke? tror nok jorgis kan svare deg bedre enn dette Endret 10. februar 2005 av chs89 Lenke til kommentar
jorgis Skrevet 10. februar 2005 Del Skrevet 10. februar 2005 Den letteste koden (i ditt tilfelle, forutsatt at du ikke skal ha veldig mange brukere senere) er slik: config.php <?php $bruker = "Fredrik"; $bruker2 = "Webmaster"; $pass = "start"; $pass2 = "john"; ?> login_ok.php <?php include("config.php"); if($_POST[brukernavn] == ""){ echo"Brukernavnet er ikke skrevet"; // sjekker om brukernavnet er skrevet. } if($_POST['passord'] == ""){ echo"Passordet er ikke skrevet"; // sjekker om passord er skrevet. } if($_POST['brukernavn'] == $bruker | $_POST['brukernavn'] == $bruker2){ // sjekker om brukernavn passer. if($_POST['passord'] == $pass | $_POST['passord'] == $pass2){ // sjekker om passord passer. // bruker vidresendes header("Location: default.php?brukernavn=$_POST['brukernavn']&passord=$_POST['passord']"); } } else { echo"Du skrev inn feil brukernavn eller passord."; } ?> Alternativt kan du bruke arrays og f.eks. en foreach-løkke, men hvis du ikke trenger noe særlig mer enn to-tre brukere, er det greit slik det er. Lenke til kommentar
ZoRaC Skrevet 14. februar 2005 Del Skrevet 14. februar 2005 Hva med noe slikt? $user_pass[]="Fredrik|||start"; $user_pass[]="Webmaster|||john"; Så sjekker du: <?php include("config.php"); $user = $_POST['brukernavn']; $pass = $_POST['passord']; if(empty($user)){ echo"Brukernavnet er ikke skrevet"; // sjekker om brukernavnet er skrevet. } if(empty($pass)){ echo"Passordet er ikke skrevet"; // sjekker om passord er skrevet. } if(in_array($user . "|||" . $pass, $user_pass){ // sjekker om brukernavn passer. // bruker vidresendes header("Location: default.php?brukernavn=$user&passord=$pass"); } else { echo "Du skrev inn feil brukernavn eller passord."; } ?> Lenke til kommentar
jorgis Skrevet 14. februar 2005 Del Skrevet 14. februar 2005 Hvorfor bruke et så klussete array? $user_pass = array("Fredrik" => "start", "Webmaster" => "John"); vil funke mye bedre, siden du slipper å tulle med å sette sammen strengene inni in_array()-funksjonskallet. Lenke til kommentar
???????? Skrevet 14. februar 2005 Del Skrevet 14. februar 2005 Tja... er ikke helt sikker på om jeg er enig jorgis. Hvordan vil du da validere brukeren, og hva vil være bedre med det enn måten ZoRaC foreslår? Glem ikke at if($user_pass[$_GET['user']] == $_GET['pass']) vil være true hvis variablene er tomme, så da må det bli sterkere validering av at feltene har en verdi, eventuelt plassere det i en if() - men da er det nesten bedre å behold løsningen til ZoRaC. Lenke til kommentar
jorgis Skrevet 14. februar 2005 Del Skrevet 14. februar 2005 <?php include("config.php"); $user = $_POST['brukernavn']; $pass = $_POST['passord']; if(empty($user)){ die("Brukernavnet er ikke skrevet"); // sjekker om brukernavnet er skrevet. } if(empty($pass)){ die("Passordet er ikke skrevet"); // sjekker om passord er skrevet. } if($user_pass[$user] == $pass){ // sjekker om brukernavn passer. // bruker vidresendes header("Location: default.php?brukernavn=$user&passord=$pass"); } else { echo "Du skrev inn feil brukernavn eller passord."; } ?> config.php: <?php $user_pass = array("Fredrik" => "start", "Webmaster" => "John"); ?> Kan ikke se noe galt med å gjøre det på denne måten. Legg merke til at die() dreper scriptet hvis passord eller brukernavn er tomme, og da unngår du problemet du snakket om. Lenke til kommentar
???????? Skrevet 14. februar 2005 Del Skrevet 14. februar 2005 Nettopp, da har du lagt til die() - og dette er ofte en kjedelig funksjon med tanke på at de fleste vil ha med en footer på sidene sine også. Med die() så avsluttes scriptet med en gang. Da er det nesten bedre med if() på om feltene er fylt ut. Du må nesten være enig i at ZoRaC leverer en enklere løsning Hehe... ikke missforstå, jeg har fått med meg at du er en flink programmerer. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå