Knebba Skrevet 12. april 2007 Del Skrevet 12. april 2007 (endret) Holder på med et lite prosjekt, og har laget en loginfunksjon. lagde den for en stund siden. er litt frem å tilbake med hvor mye jeg får jobbet med det grunnet skole o.l. uansett, får ikke denne her til å virke: function sjekklogginn(){ $ip = $_SERVER['REMOTE_ADDR']; $browser = $_SERVER['HTTP_USER_AGENT']; if($_SESSION['loggetinn'] == ja){ $brukersjekk = mysql_real_escape_string($_SESSION['brukernavn']); $passordsjekk = mysql_real_escape_string($_SESSION['passord']); $query = mysql_query("SELECT nick, passord FROM brukere WHERE nick = '$brukersjekk'") or die(mysql_error()); $row = mysql_fetch_object($query); $level = $row->level; $passord = $row->passord; $brukernavn = $row->nick; $ip = $_SERVER['REMOTE_ADDR']; $browser = $_SERVER['HTTP_USER_AGENT']; if($_SESSION['brukernavn'] !== $brukernavn or $_SESSION['passord'] !== $passord or $_SESSION['browser'] !== $browser){ header("location:../brukere/loggut.php"); } else { return true; } } } den skal brukes i begynnelsen av hver side som trenger autorisasjon for å sjekke at det virkelig er den som logget inn som enda er der. men den funker ikke, noen som kan se hvorfor? Endret 12. april 2007 av kennteh Lenke til kommentar
Hayer Skrevet 12. april 2007 Del Skrevet 12. april 2007 session_start(); må legges til på starten.. Det må gjøres på alle script som bruker sessions.. Lenke til kommentar
Knebba Skrevet 12. april 2007 Forfatter Del Skrevet 12. april 2007 det har jeg i en annen fil Lenke til kommentar
DarkSlayer Skrevet 12. april 2007 Del Skrevet 12. april 2007 1. if( $_SESSION['loggetinn'] == ja ) sett ja i tøddler. 'ja'. Da forventes også at man setter 'ja' ved innlogging, og 'nei' ved utlogging eller null om du vil. 2. passord i databasen bør være en md5() av passordet. Du bør aldri lagre passordet i klartekst i databasen. punktum. forandre derfor query til å inkludere passord. ... WHERE nick = $username AND passord = md5($_SESSION['passord']) Det eneste du sjekker da er om resultatet som returneres faktisk har 1 resultat. ikke 2 ikke 0. da kan du droppe resten av koden, og putte på en echo om du får et resultat eller ikke. Så kan du etterpå slenge på ip og browser sjekk om du vil. Lenke til kommentar
Knebba Skrevet 12. april 2007 Forfatter Del Skrevet 12. april 2007 passordet i sessionen er allerede md5. all innlogging blir gjort i en annen fil, denne er bare for å sjekke at det fortsatt er samme maskin. men kan du forklare nærmere det siste du skrev der darkslayer? Lenke til kommentar
grimjoey Skrevet 12. april 2007 Del Skrevet 12. april 2007 (endret) Får du en feilkode som "reference to undefined variable $res at line x" ellernoe? IIS sender vel feilmeldinger til event loggeren i windows (control panel->administrative tools->event logs) Apache har egen textfil som er tilgjengelig /installdir/logs/error.log ellernoe. ... $query = mysql_query(...); ... $row = mysql_fetch_object($res); ... Bytt ut query med res eller omvendt. Endret 12. april 2007 av grimjoey Lenke til kommentar
Knebba Skrevet 12. april 2007 Forfatter Del Skrevet 12. april 2007 ingen feilmeldinger i logger eller noe som helst, må være en ren kodefeil, har også fikset feilen med query\res. bruker funksjonen slik forresten: if(sjekklogginn()){ echo "du er fet"; } er det kanskje det som er feil? Lenke til kommentar
grimjoey Skrevet 12. april 2007 Del Skrevet 12. april 2007 (endret) return true; bytt til: return 1; Unngå klartekst uten apostrofer. Er true et reservert ord? Skrives ikke det i så fall TRUE eller spiller ikke det noen rolle? 1 funker vertfall uansett. "true" ville også funket ettersom det ikke er NULL. Endret 12. april 2007 av grimjoey Lenke til kommentar
grimjoey Skrevet 12. april 2007 Del Skrevet 12. april 2007 (endret) forresten... $query = mysql_query("SELECT nick, passord FROM brukere WHERE nick = '$brukersjekk'") or die(mysql_error()); mangler ; i slutten av query skal være: $query = mysql_query("SELECT nick, passord FROM brukere WHERE nick = '$brukersjekk';") or die(mysql_error()); eller noe Endret 12. april 2007 av grimjoey Lenke til kommentar
Knebba Skrevet 12. april 2007 Forfatter Del Skrevet 12. april 2007 true skal funke.. skjedde ikke noe etter å ha rettet opp i queryen heller.. Lenke til kommentar
Bakke Skrevet 13. april 2007 Del Skrevet 13. april 2007 (endret) Så vidt jeg vet er ikke ja en boolean verdi... Og det er != ikke !== Edit: Operators Endret 13. april 2007 av mhbakke Lenke til kommentar
Ernie Skrevet 13. april 2007 Del Skrevet 13. april 2007 !== er != med type check, ergo fullstendig lovlig Lenke til kommentar
grimjoey Skrevet 14. april 2007 Del Skrevet 14. april 2007 (endret) legg ut koden du har nå med alle fiksene du har gjort. hvordan setter du $_SESSION['loggetinn'] ? edit:typo Endret 14. april 2007 av grimjoey Lenke til kommentar
grimjoey Skrevet 14. april 2007 Del Skrevet 14. april 2007 jeg bruker litt annen syntaks i strenger. du kan jo prøve $query = mysql_query("SELECT nick, passord FROM brukere WHERE nick = '$brukersjekk';") or die(mysql_error()); til: if(!$query = mysql_query('SELECT nick,passord FROM brukere WHERE nick=\''.$brukersjekk.'\';') die(mysql_error()); ... la også merke til en annen ting nå. etter $row = mysql_fetch_object(...); setter du objekt data til variabler og du har en referanse til $row->level som du ikke har med i queryen. Kanskje du burde ha: if(!$query = mysql_query('SELECT nick,passord,level FROM brukere WHERE nick=\''.$brukersjekk.'\';') die(mysql_error()); Lenke til kommentar
Hayer Skrevet 14. april 2007 Del Skrevet 14. april 2007 if (!$_SESSION['innlogget']){ echo "Du er ikke innlogget!"; } echo "Du er innlogget...." Legg inn det på toppen av siden? Lenke til kommentar
Bakke Skrevet 14. april 2007 Del Skrevet 14. april 2007 (endret) Må nok legge til en else i det scriptet der, eller så vil brukeren få begge meldingene om han/hun ikke er logget inn. Og du glemte et semikolon. Jeg ville gjort det slik: PHP <?phpif ($_SESSION['innlogget'] != true) { echo "Du er ikke innlogget!"; } else { echo "Du er innlogget...."; } ?> Edit: hvordan setter du $_SESSION['loggetinn'] ? $_SESSION['loggetinn'] = true; Og når brukeren skal logge ut kan du bruke $_SESSION['loggetinn'] = false eller session_destroy() Endret 14. april 2007 av mhbakke Lenke til kommentar
grimjoey Skrevet 15. april 2007 Del Skrevet 15. april 2007 Jeg lurte på hvordan kennteh satt $_SESSION['loggetinn']. Kan ha noe med hvorfor koden feiler. Lenke til kommentar
Knebba Skrevet 15. april 2007 Forfatter Del Skrevet 15. april 2007 har vært borte noen dager... men grimjoey: if(mysql_num_rows($res) !== 0) { $row = mysql_fetch_object($res); $level = $row->level; $ip = $_SERVER['REMOTE_ADDR']; $browser = $_SERVER['HTTP_USER_AGENT']; $brukernavn = $row->nick; $_SESSION['loggetinn'] == ja; $_SESSION['brukernavn'] = $brukernavn; $_SESSION['passord'] = $passord; $_SESSION['level'] = $level; $_SESSION['ip'] = $ip; $_SESSION['browser'] = $browser; slik settes sessionene, og det funker hvis jeg lager if-sjekk med bare loggetinn, men blir sikrere hvis jeg får den funksjonen jeg har laget til å funke. Lenke til kommentar
grimjoey Skrevet 15. april 2007 Del Skrevet 15. april 2007 (endret) men bruk (") apostrofer begge stedene please. det er en string du setter. edit: altså $_SESSION['loggetinn'] = "ja"; hmm. du har et likhets tegn for mye der Endret 15. april 2007 av grimjoey Lenke til kommentar
Knebba Skrevet 15. april 2007 Forfatter Del Skrevet 15. april 2007 (endret) skjer ikke noe nytt. men syntes det er rart at jeg ikke blir logget ut heller, slik jeg funksjonen skal gjøre hvis ting ikke stemmer. Endret 15. april 2007 av kennteh 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å