kroekkete Skrevet 26. april 2004 Del Skrevet 26. april 2004 Hei, er det noen kloke hoder her som ser hvorfor dette ikke fungerer i Opera 7.23? <?php session_start(); if($_SESSION['brukernavn'] && $_SESSION['passord']){ include("pobasekopling.php"); $passord=($_SESSION ['passord']); //Sjekker passord og brukernavn med database $henter_bruker = @mysql_query("SELECT brukernavn FROM brukere WHERE brukernavn='{$_SESSION['brukernavn']}' AND passord='{$passord}'"); if(@mysql_num_rows($henter_bruker) == 0) { header('Location: http://inter.net/registrer.php'); } else { echo ''; } } else { header('Location: http://inter.net/registrer.php'); } ?> <HTML> <HEAD> osv... Det jeg gjør her er at hvis alt er riktig printer den "ingenting" (echo '' til skjermen og går videre ned til der hvor html-kodingen starter. Dette fungerer i IE 6.0, men ikke i Opera 7.23. Sukk... Blir veldig glad hvis noen ser hva jeg gjør galt! Lenke til kommentar
magikern Skrevet 26. april 2004 Del Skrevet 26. april 2004 har du prøvd å slette cache i Opera? Lenke til kommentar
???????? Skrevet 26. april 2004 Del Skrevet 26. april 2004 Hva er du forsøker å gjøre med denne: if($_SESSION['brukernavn'] && $_SESSION['passord']) ?` Hvis hva? isset() !empty()? Det du gjør nå er å sjekke hvis variabelene = TRUE Prøv denne for å sjekke hvilke variabler sessionen inneholder: //Sett inn denne koden foreach($_SESSION as $var){ echo "$var<br>\n"; } Lenke til kommentar
kroekkete Skrevet 26. april 2004 Forfatter Del Skrevet 26. april 2004 Ja, tømt cachen, restartet Opera, restartet pc'en... Jeg lurer på om det kan ha noe med hvordan dette er skrevet: if($_SESSION['brukernavn'] && $_SESSION['passord']){ include("pobasekopling.php"); $passord=($_SESSION ['passord']); Lenke til kommentar
kroekkete Skrevet 26. april 2004 Forfatter Del Skrevet 26. april 2004 [????????] Sessionen inneholdt faktisk brukernavn og passord... Lenke til kommentar
kroekkete Skrevet 26. april 2004 Forfatter Del Skrevet 26. april 2004 Svar til ???????? Sessionen inneholdt faktisk brukernavn og passord... Lenke til kommentar
???????? Skrevet 26. april 2004 Del Skrevet 26. april 2004 Sett inn litt tekst dersom passord og brukernavn ikke stemmer, så ser du hvis du opp den teksten: if(@mysql_num_rows($henter_bruker) == 0) { header('Location: http://inter.net/registrer.php'); } else { echo 'Oops, wrong password and/or username!'; } } Lenke til kommentar
kroekkete Skrevet 26. april 2004 Forfatter Del Skrevet 26. april 2004 (endret) Er litt usikker på hva du mener. Scriptet nå går som følger: Sjekk om det er et brukernavn og passord i sesjonen. Hvis det er det, koble til databasen og hent brukernavnet og passordet der som er identisk med det som følger sesjonen. Hvis det ikke er noe som matcher, send brukeren til registreringssiden Hvis det er full match skriv ingenting (her kommer løsningen hvor jeg har valgt at ingenting skal skrives, rett og slett fordi jeg ikke vet hvordan jeg skal be php om ikke å gjøre noen ting.) Hvis det ikke fulgte brukernavn og passord med i sesjonen, send brukeren til registreringssiden <HTML>(Selve innholdet på siden. (Som da kun blir tilgjengelig hvis det fulgte med passord og brukernavn, og de stemte overens med basen.) Egentlig burde dette vært der hvor jeg nå velger å skrive "ingenting" (vanskelig å uttrykke at man ikke skriver noe... hehe...), men jeg fikk så mye parsingfeil at jeg fant denne løsningen mye enklere. Burde kanskje skrevet dette tidligere, men det som skjer er at jeg konsekvent blir sendt til registreringssiden hvis jeg bruker Opera. Endret 26. april 2004 av primaxx Lenke til kommentar
???????? Skrevet 26. april 2004 Del Skrevet 26. april 2004 Sjekk om det er et brukernavn og passord i sesjonen. Det gjør du ikke nå, nå sjekker du om verdiene er TRUE - det fungerer i mange tilfeller, dvs. så lenge ikke bruker eller pass er FALS eller PHP endrer måten å håndtere dette på Hvis det er det, koble til databasen og hent brukernavnet og passordet der som er identisk med det som følger sesjonen. Her burde du ta en kikk på mysql_escape_string() og bruke . for å sette sammen setningen. brukernavn='".$_SESSION['brukernavn']."' Hvis det ikke er noe som matcher, send brukeren til registreringssiden Hvis det er full match skriv ingenting (her kommer løsningen hvor jeg har valgt at ingenting skal skrives, rett og slett fordi jeg ikke vet hvordan jeg skal be php om ikke å gjøre noen ting.) Oops... her var det jeg som så litt feil, ang. det med plassering av tekst. Grunnen til at du ikke får opp noen feilmeldinger er at du har plassert @ foran spørringene, ta bort denne og fiks det med . Lenke til kommentar
kroekkete Skrevet 27. april 2004 Forfatter Del Skrevet 27. april 2004 Sjekk om det er et brukernavn og passord i sesjonen. Det gjør du ikke nå, nå sjekker du om verdiene er TRUE - det fungerer i mange tilfeller, dvs. så lenge ikke bruker eller pass er FALS eller PHP endrer måten å håndtere dette på Hmm... Kan du gi meg et hint om hva jeg burde gjøre i stedet for? Har slitt med dette så lenge nå at kreativiteten og mulighetene til å se nye løsninger er på et tilnærmet absolutt lavmål... Forresten, jeg har nok forklart meg litt utydelig. Hvis det skulle være noen tvil, dette er ikke koden som kjører etter at brukeren har registrert brukernavn og passord. Strukturen er som følger: Forside, med felter for innlogging. php som sjekker mot basen om bruker eksisterer, og (hvis ja) sender deretter brukeren til innlogget forside Det er først når brukeren vil til kreditorer.php fra den innloggete forsiden at scriptet det handler om her kjøres. Jeg klarer å logge meg inn i Opera, det er først når jeg skal videre fra innlogget forside jeg begynner å slite. (Problemet er at jeg først hadde laget mitt eget script, deretter fant jeg et på nettet som jeg syntes så bedre ut, dette har jeg så flikket litt på, og nå kommer jeg altså hverken att eller fram...) Hvis det ville vært mulig skulle jeg gjerne brukt scriptet jeg bruker for å logge meg inn også når jeg allerede er innlogget, men det klarer jeg ikke. Innbiller meg at årsaken til det har noe med $_POST() variablene å gjøre, men kan for lite til å finne det ut selv. Har forsøkt å endre de til $_GET() uten at det hjalp... Her er scriptet som lar meg logge inn, både i Opera og IE <?PHP session_start(); $_SESSION['brukernavn'] = $brukernavn; $_SESSION['passord'] = $hentet_passord['passord']; /* Setter betingelser hvis brukernavnet og passordet er fyllt inn. */ if($_POST['brukernavn'] && $_POST['passord']) { /* Krypterer det registrerte passordet */ $kryptert_passord=(crypt($_POST['passord'],"nøkkel, skjult for sourcecode.no")); /* Henter filen som kopler til databasen */ include("pobasekopling.php"); /* Henter brukernavnet og passordet som er lagret i databasetabellen "brukere", og som matcher de inntastede dataene. */ $sjekk_passord="SELECT brukernavn,passord FROM brukere WHERE (brukernavn='{$_POST['brukernavn']}')"; $dbpassord=mysql_query($sjekk_passord); /* Lagrer dataene fra databasen i et array, for å splitte brukernavn og passord. */ $hentet_passord=mysql_fetch_array($dbpassord); /* Sjekker om det inntastede passordet er det samme som passordet i databasen. */ $basepassord=($hentet_passord['passord']); if(($kryptert_passord)==($hentet_passord['passord'])) { /* Hvis passordet er likt med databasepassordet videresendes brukeren til sine personlige sider. */ header("Location: http://inter.net/innlogget.php"); exit; } /* Hvis passordene ikke matcher genereres en feilmelding. */ else { print "Passord eller brukernavn er feil, eller manglende utfylt"; } } /* Betingelse hvis det ikke er fylt inn både brukernavn og passord */ else { print "Du må fylle inn brukernavn og passord!"; } ?> Lenke til kommentar
Cucum(r) Skrevet 27. april 2004 Del Skrevet 27. april 2004 Se om du får noe ut av denne artikkelen: http://www.misinterpreted.net/indexarticlephp-1.htm Lenke til kommentar
kroekkete Skrevet 27. april 2004 Forfatter Del Skrevet 27. april 2004 Se om du får noe ut av denne artikkelen: http://www.misinterpreted.net/indexarticlephp-1.htm Det er din side, er det ikke? Fin! if ($_SESSION["login"] != "true"){ Login her, er det selve skjemaet i login.php? Lenke til kommentar
???????? Skrevet 27. april 2004 Del Skrevet 27. april 2004 $_SESSION["login"] er en variabel som er lagret i en sesion. Du ser at den blir satt i validate.php filen. Lenke til kommentar
kroekkete Skrevet 27. april 2004 Forfatter Del Skrevet 27. april 2004 Det var dette med de øynene man blir så fort blind på... :-) Takk! Lenke til kommentar
kroekkete Skrevet 28. april 2004 Forfatter Del Skrevet 28. april 2004 Hei igjen, guruer! Dette vil liksom ingen ende ta. Nå får jeg ikke engang logget inn... Jeg sjekket ut scriptet SirIce tipset meg om ( http://www.misinterpreted.net/indexarticlephp-1.htm ), og som dere ser er dette en råkopi av fila validate.php, med unntak av at jeg henter verdiene det skal sjekkes mot fra en MySQL-base, hvor passordene ligger kryptert. Jeg må med andre ord kryptere passordet fra skjemaet også før jeg sjekker det mot det som er lagret i basen. Nå blir jeg sendt direkte til registrer.php... Jeg ser ingen feil, men det gjør kanskje dere? <?php session_start(); $kryptert_passord=(crypt($_POST['passord'],"nøkkel, skjult for sourcecode.no")); include("pobasekopling.php"); $frabasen = "SELECT brukernavn,passord FROM brukere WHERE (brukernavn='{$_POST['brukernavn']}')"; $dbpassord=mysql_query($frabasen); $baseRad=mysql_fetch_array($dbpassord); $basepassord=($baseRad['passord']); $basebruker = ($baseRad['brukernavn']); if (($_POST["brukernavn"] == $basebruker) and ($kryptert_passord == $basepassord)){ $_SESSION["login"] = "true"; header("Location: http://www.inter.net/innlogget.php"); exit; } else { $_SESSION["error"] = "<font color=red>Beklager... Feil brukernavn eller passord!</font>"; header("Location: http://www.inter.net/registrer.php"); } ?> For ordens skyld: Jeg vet at det er her det er galt, ettersom jeg hadde skrevet header("Location: http://wwwinter.net/registrer.php"); i stedet for header("Location: http://www.inter.net/registrer.php"); og fikk beskjed om at siden ikke kunne vises hver gang jeg forsøkte å logge meg inn. 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å