muffe Skrevet 19. desember 2003 Del Skrevet 19. desember 2003 Holder på med et medlemsadministrasjonssystem. Har for det meste gjort ferdig brukerdelen, dvs. der hvor de registrerer seg, oppdaterer medlemsinfo osv. Har nå begynt på admin-delen, som er litt mer kmpleks. Har tenkt å lage en rekke scripts, som gjør hver sin ting, som søking, oppdatering, sletting, og vising av info. For at ikke alle og enhver skal få tilgang på dette, så nå jeg ha et enkelt og sikkert innloggingssystem. Tenkte på noe ala at man går inn på admin.html, hvor man skriver inn id og passwd, og så har man tilgang til scriptene update.php, search.php, view.php helt til man logger inn neste gang. Noen tips til hvordan man kan gjøre dette? Har lurt litt på .htaccess, men er ikke sikker. Hvis man kan gjøre det med php og mysql hadde det vært det beste. For opplysningens skyld: Alle admin-scriptene ligger ien egen mappe. På forhånd takk for hjelpen. Lenke til kommentar
Svendsen Skrevet 19. desember 2003 Del Skrevet 19. desember 2003 se litt på DENNE jeg brukte dette på de sier som skulle være sikre og det har vel funka greit.... Lenke til kommentar
Sugx Skrevet 20. desember 2003 Del Skrevet 20. desember 2003 Å bare bruke sessions, som de gjør i den tutorialen, kan redusere funksjonaliteten endel, ved at brukere blir automatisk utlogget etter så, så lang tid's inaktivitet, si man skriver en lang artikkel, så når man skal sende den inn, er sessionen utløpt, veldig kjedelig. Derfor lønner det seg bruke sessions sammen med cookies på en lur måte. En annen ting med den tutorialen, og mange andre tutorials, er at de ikke kjører noen sjekker på hva brukeren faktisk skriver inn, det bør alltid kjøres regexps på input fra brukere. I hvertfall når denne dataen skal brukes i queries etc. Lenke til kommentar
???????? Skrevet 20. desember 2003 Del Skrevet 20. desember 2003 ...at brukere blir automatisk utlogget etter så, så lang tid's inaktivitet... Det burde ikke være noe særlig til problem sidene session expire er defalt satt til 180 minutter - eller 3 timer. For de aller fleste scripts burde dette være mer enn nok tid. Skulle det likevel være nødvendig å utvide denne tiden, siden en bruker er på samme side i mer enn 3 timer, kan du enkelt utvide denne tiden med session_cache_expire() Siden det er så mange som ikke har cookies enabled er det ikke lurt å la innlogging være avhengig av dette, men det er en veldig bra funksjon for funksjoner som automatisk innloging! Lenke til kommentar
muffe Skrevet 20. desember 2003 Forfatter Del Skrevet 20. desember 2003 (endret) Har nå skrevet login.php slik: <?php session_start(); $id = $_POST['id']; $password = $_POST['Passord']; $server = "localhost"; $user = "stduser"; $passwd = "sensur"; $database = "gsfmedlemmer"; /* Kopler til og velger database */ $link = mysql_connect("$server", "$user", "$passwd") or die("Kan ikke kople til : " . mysql_error()); $db=mysql_select_db("$database"); //or die("Finner ikke database") $query = "SELECT * FROM admins WHERE id='$id' and Passwd='".md5($password)."'"; $result= mysql_query($query) or die ("Could not execute query : $query." . mysql_error()); if (mysql_num_rows($result) == 0) { echo "<div align=center><b>Oops! Your login is wrong. Please click back and try again.</b></div>"; } else { $r=mysql_fetch_array($result); $login_username=$r["id"]; session_register("login_username"); Header("Location: main.php"); } ?> Og main.php slik: <?php session_start(); if($login_username=="") { Header("Location: login.html"); } else { echo(' <html> <head> <title>GSF Administrasjon</title> </head> <body> '); echo('Test'); echo(' </body> </html> '); } ?> Og her er feilmeldingen: Notice: Undefined variable: login_username in D:\Programfiler\Apache Group\Apache2\htdocs\Admin\main.php on line 4 Warning: Cannot modify header information - headers already sent by (output started at D:\Programfiler\Apache Group\Apache2\htdocs\Admin\main.php:4) in D:\Programfiler\Apache Group\Apache2\htdocs\Admin\main.php on line 5 Adressen som står i adressefeltet viser til main.php. Noen ide om hva som kan være feil? Endret 20. desember 2003 av muffe Lenke til kommentar
???????? Skrevet 20. desember 2003 Del Skrevet 20. desember 2003 (endret) Når du får opp en notice sender serveren en header som sier at det er et html dokument. Derfor klarer ikke php å endre headeren. Siden det er er en notice i linje 4 kan ikke php i linje 5 endre headeren. Du slipper å bruke session_register - bare bruk $_SESSION['EtEllerAnnet'] = "EtEllerAnnet"; Endre til $_SESSION Endret 20. desember 2003 av ???????? Lenke til kommentar
muffe Skrevet 20. desember 2003 Forfatter Del Skrevet 20. desember 2003 (endret) Nå funker det glimrende. Hjertlig tusen takk til alle sammen. Endret 20. desember 2003 av muffe Lenke til kommentar
BlueEAGLE Skrevet 21. desember 2003 Del Skrevet 21. desember 2003 Se også phpSecurePages Lenke til kommentar
Gjest Slettet+432 Skrevet 22. desember 2003 Del Skrevet 22. desember 2003 hehe, litt sent, kanskje? Lenke til kommentar
Micromus Skrevet 22. desember 2003 Del Skrevet 22. desember 2003 Ville vært veldig forsiktig med den der; $query = "SELECT * FROM admins WHERE id='$id' and Passwd='".md5($password)."'"; Det er ikke så forferdelig vanskelig å legge inn et carefully crafted passord her som gjør at queryet alltid returnerer en eller flere rekker. Anbefaler at du henter ned passordet og sjekker passordet lokalt i PHP koden. Lenke til kommentar
fjotten Skrevet 27. desember 2003 Del Skrevet 27. desember 2003 Ville vært veldig forsiktig med den der; $query = "SELECT * FROM admins WHERE id='$id' and Passwd='".md5($password)."'"; Det er ikke så forferdelig vanskelig å legge inn et carefully crafted passord her som gjør at queryet alltid returnerer en eller flere rekker. Anbefaler at du henter ned passordet og sjekker passordet lokalt i PHP koden. Hva mener du med det? Lenke til kommentar
Ronnyronny Skrevet 27. desember 2003 Del Skrevet 27. desember 2003 Skjønte heller ikke hva du mente, men bruk heller ei egen fil under navnet db.ph eller f.eks. dbconnect.php, som inneholder mysql_connect koden din, og bruk include( "include/db.php" ); i de filene som skal ha tilkobling til db'en. session_start(); if($login_username=="") { Header("Location: login.html"); } Ville brukt $_SESSION[login_username] i stedet Lenke til kommentar
Torbjørn Skrevet 28. desember 2003 Del Skrevet 28. desember 2003 (endret) mysql har sin egen md5 funksjon, bruk den istedet for php, så er du trygg. Endret 28. desember 2003 av Torbjørn Lenke til kommentar
???????? Skrevet 29. desember 2003 Del Skrevet 29. desember 2003 Dersom id feltet er unikt, og man passer på at det ikke er noen verdier som er hacket mysql_escape_string(), holder det lenge med å kjøre en spørring som henter ut data der id og passord har en bestemt verdi. Lenke til kommentar
fjotten Skrevet 30. desember 2003 Del Skrevet 30. desember 2003 Ville vært veldig forsiktig med den der; $query = "SELECT * FROM admins WHERE id='$id' and Passwd='".md5($password)."'"; Det er ikke så forferdelig vanskelig å legge inn et carefully crafted passord her som gjør at queryet alltid returnerer en eller flere rekker. Anbefaler at du henter ned passordet og sjekker passordet lokalt i PHP koden. Hva mener du med det? Ingen som har lyst til å forklare det med "carefully crafted" passord da? Lenke til kommentar
Torbjørn Skrevet 30. desember 2003 Del Skrevet 30. desember 2003 uten at jeg kjenner md5hashing alt for godt, er det kanskje mulig å finne et passord som gir en gyldig sql fortsettelse fra det som står der oppe, f.eks hvis md5($passord) gir en 32 bits streng som evaluert i mysql tilsvarer følgende: "' or 1" (ie først av slutter strengen med en fnutt (') og deretter slenger på "or 1" som vil gjøre at hele uttrykket evalueres til sant uansett hva resultatet av AND blir. Hvis man derimot gjør dette istedet, burde man være trygg: $passord = mysql_escape_string($passord); $query = "SELECT * FROM admins WHERE id='$id' and Passwd=md5('$password')"; 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å