???????? Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 Det er et litt rart script du bruker if (!isset($_POST['username']) || !isset($_POST['password'])) { header( "Location: index.html" ); exit; } elseif (empty($_POST['username']) || empty($_POST['password'])) { header( "Location: index.html" ); exit; } For det første burde man ikke bruke isset når det er varaibler fra et skjema - for isset returnerer true selv om den er tom. Så du kan fjerene den første delen og kun sjekke empty. Videre så skal helst ikke passordet ol. til databasen lagres i phpfilen! "If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled. register_globals: important note: Since PHP 4.2.0, the default value for the PHP directive register_globals is off. The PHP community encourages all to not rely on this directive but instead use other means, such as the superglobals. " - fra manualen. Bruk $_SESSION, både i denne filen og members.php (og andre filer som bruker sessions) Og til slutt: LES MANUALEN!!!!!!!!!!!!!!!!! Lenke til kommentar
_TT_ Skrevet 27. februar 2004 Forfatter Del Skrevet 27. februar 2004 Eg driter da f*** i hvor sikkert det er, først og fremst vil eg at dritet skal fungere!(Og register globals er OFF, og har alltid vert det) Det hjelper da ikke å lese manualen når denne koden skal funke! Som sagt har en kompis fått den til å fungere, slik den er så spørsmålet mitt var om dere vet hvorfor den ikke fungerer. Eg spurde ikke om forandringer i koden nett nå! Lenke til kommentar
???????? Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 (endret) Eg driter da f*** i hvor sikkert det er, først og fremst vil eg at dritet skal fungere!(Og register globals er OFF, og har alltid vert det) Det hjelper da ikke å lese manualen når denne koden skal funke! Som sagt har en kompis fått den til å fungere, slik den er så spørsmålet mitt var om dere vet hvorfor den ikke fungerer. Eg spurde ikke om forandringer i koden nett nå! Har du forsøkt noe av det jeg foreslår? Siden det virker et sted og ikke et annet så tyder det på at det er noen ting PHP på din server ikke takler - og da burde du prøve å gjøre endringene jeg foreslår. Du er veldig hårsår - er det du som har skrevet scriptet? I så fall burde du tåle litt kritikk - det er ganske svakt og bruker "gamle" koder. Test også følgende: // sjekk om det er noen feil i spørringen echo mysql_error()."<br>"; $rowCheck = mysql_num_rows($result); // sjekk hva $rowCheck inneholder echo $rowCheck."<br>"; if($rowCheck > 0){ while($row = mysql_fetch_array($result)){ session_start(); session_register('username'); header( "Location: members.php" ); } } else { echo 'Incorrect login name or password. Please try again.'; } Merk: endringene vil stoppe session og header, men du kan kanskje se hvor feilen ligger. Og det er seriøst uhøffelig å banne når folk kommer med forslag for å hjelpe deg! Endret 27. februar 2004 av ???????? Lenke til kommentar
magikern Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 ser at denne posten gikk litt til ******, men uansett til topicstarter se på http://www.phpclasses.org og søk der etter "authenticate" så finner du en class hvor det også følger med en db class, dette er sikkert og det fungerer... Lenke til kommentar
sven-o Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 Eg driter da f*** i hvor sikkert det er, først og fremst vil eg at dritet skal fungere!(Og register globals er OFF, og har alltid vert det) Det hjelper da ikke å lese manualen når denne koden skal funke! Som sagt har en kompis fått den til å fungere, slik den er så spørsmålet mitt var om dere vet hvorfor den ikke fungerer. Eg spurde ikke om forandringer i koden nett nå! Utakknemlige dust... Utrolig at du får svar her i det hele tatt! Lenke til kommentar
_TT_ Skrevet 29. februar 2004 Forfatter Del Skrevet 29. februar 2004 Det var da ikke eg som begynnte å skrike. Som sagt så er eg en nybegynner, og allt eg spurde om var litt hjelp til login skriptet. Det eg får er jo berre kritikk på hvordan det er lagt. Lenke til kommentar
Torbjørn Skrevet 29. februar 2004 Del Skrevet 29. februar 2004 Det var da ikke eg som begynnte å skrike. Som sagt så er eg en nybegynner, og allt eg spurde om var litt hjelp til login skriptet. Det eg får er jo berre kritikk på hvordan det er lagt. kritikk er da hjelp det og? jeg ser dessuten mange forslag til utbedringer her, gjør ikke du? hvis du ikke skjønner noe av hjelpen du får fordi du er for fersk, så burde du kanskje prøve med noe lettere enn login først? Lenke til kommentar
_TT_ Skrevet 1. mars 2004 Forfatter Del Skrevet 1. mars 2004 (endret) Problemet er bare det at eg har lyst på en login.... Fannt selfølgelig feilen nå.... Sorry at eg gikk litt over styr tidligere, ble frustrert av greiene... Endret 1. mars 2004 av _TT_ Lenke til kommentar
_TT_ Skrevet 1. mars 2004 Forfatter Del Skrevet 1. mars 2004 (endret) OK. Har fått login og greier til å funger, skal skifte ut session_register og session_is_registered med superglobalen $_SESSION.... Følgene kode går inn i login.php: session_start(); $_SESSION['sessionvar'] = "is_set"; header( "Location: members.php" ); Og følgende i members.php: <?php session_start(); if(isset($_SESSION['sessionvar'])) { echo "No funka det"; } else { echo "Funka ikkje"; } ?> Eg leste på PHP.net om $_SESSION og dette skal ifølge kommentarene eg så det fungere, skal det ikke? Endret 1. mars 2004 av _TT_ Lenke til kommentar
Torbjørn Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 hvillken feil fikk du når du prøvde det? det ville være mere naturlig å bruke: if($_SESSION['sessionvar'] == "is_set"), siden du faktisk gir variabelen den verdien på dine sider. istedet for isset($_SESSION['sessionvar']) Lenke til kommentar
_TT_ Skrevet 1. mars 2004 Forfatter Del Skrevet 1. mars 2004 (endret) Eg får ingen feilmelding, men $_SESSION['sessionvar'] inneholder ingenting når eg kommer til neste siden. Og det at eg skulle bruke isset() fannt eg jo anbefalt på php.net.... Endret 1. mars 2004 av _TT_ Lenke til kommentar
magikern Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 selvom det jo alltid er mest lærerikt og gøy å lage egne ting kan det noen ganger være greit å "ikke oppfinne hjulet på nytt" så her er en veldig bra db drevet login sak: http://codewalkers.com/seecode/74.html Lenke til kommentar
_TT_ Skrevet 1. mars 2004 Forfatter Del Skrevet 1. mars 2004 Som sagt så fungerer login saken nå. Det er noe galt med $_SESSION variabelen. Er det noe slags spesiellt oppsett den trenger for å fungere over to filer? Eg har funnet tutorials på slikt som bruker $_SESSION og de fungerer ikke de heller over to filer, så eg vil tro det er noe galt med oppsettet mitt... Fungerer det for dere? Lenke til kommentar
Vonbo Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 Her hentes brukernavn og passord fra en flatfil i formatet "bruker|passord" på hver linje. <?php session_start(); if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="Shootem up"'); header('HTTP/1.0 401 Unauthorized'); echo '<img src=/"http://www.ciboire.com/cartes/carte-61.jpg/">'; exit; } else { $user = $_SERVER['PHP_AUTH_USER']; $pass = $_SERVER['PHP_AUTH_PW']; if($_SESSION['loggedin'] != "yes"){ $lines = file("userdb.txt"); foreach($lines as $line){ if(trim($line) == $user."|".$pass){ $_SESSION['loggedin'] = "yes"; $_SESSION['username'] = $_SERVER['PHP_AUTH_USER']; $_SESSION['LoginTime'] = time(); } } } if($_SESSION['loggedin'] != "yes"){ echo "<img src='http://www.ciboire.com/cartes/carte-61.jpg'>"; exit; } ?> Hva er en flatfil? Kan noen forklare bruken av dette? Lenke til kommentar
magikern Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 ett flatfil scrript vil bare si at man bruker kun filer til å lagre all info istedenfor database som jo er mye bedre.... altså du skriver inn passord / brukernavn o.l. i en fil... Lenke til kommentar
???????? Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 Nå høres du blidere ut Lag denne filen (phpinfo.php) <?php phpinfo(); ?> og kjør den. Bla litt ned på den (avhengig av hvor mye ekstra du har instalert på serveren) så finner du "session" - der burde blandt annet passe på at "Session Support" er enabled og at "session.save_path" er satt (til f.eks. /tmp). Så sjekker du at du har satt opp denne mappen. Bruker du windows er /tmp = c:\temp - så lag den mappen. Ellers kan du gå inn i php.ini filen og sette en annen plassering på mappen og opprette den mappen. Lenke til kommentar
Vonbo Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 Er det en sikrere måte? For det går vel an å bare lagre passord osv i en variabel i samme script også? Lenke til kommentar
The Red Devil Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 Vonbo, du vil aldri få ein 100% sikker løysing. Men, vist er god nok i php, så ville eg anbefalt å skrive "costum" session løysninger som lagrer infoen i ein database. Og for kvar gang du skriver/leser fra session gjør du ein test for å sjekke om det virkeleg er den rette brukeren (for å forbygge session hijacking). For å lagre passordet i ein variabel, ja det vil gå og. Men det vil være ein "bakvendt" måte og gjør det på. Lenke til kommentar
Torbjørn Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 Vonbo, du vil aldri få ein 100% sikker løysing. ...men å spørre om en sikrere løsning er likevel legitimt du kan alltids bruke cookies istedet for sessions. uavhengig av phpoppsett på serveren, så er cokoies en del av HTTP protokollen, og det skal være en rimelig rart serveroppsett som ikke lar php sende cookies Lenke til kommentar
RoyalSheep Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 Når vi først er inne på det... jeg har laget et login script til et forum jeg også har laget. Det jeg ikke har fått til er, etter login, at brukeren også får med seg "signatur" kolonnen fra "brukere" tabellen. Målet er at signaturen til brukerne postes under posten deres. Bruker forløpig if (isset($_SESSION['brukernavn'])) og <input tupe="hidden" name="brukernavn" value=<?php echo $brukernavn; ?>"> det funker jo selvsagt. Men har noen en lur løsning på hvordan jeg får hentet signaturen og lagt den i en hidden input? 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å