04. januar 2005 - 19:52Der er
29 kommentarer og 1 løsning
Hvis bruger er logget ind, kan han se siden, men!
Jeg har lavet et brugersystem efter en tutorial jeg fandt, omskrevet den lidt til eget brug, men... Et brugersystem er jo ikke noget ved hvis man ikke kan sætte en blokade på en side for folk der ikke er logget ind...
Lad os sige jeg laver en side for brugere af min site, den side må kun vises til de folk der er logget ind. Så den skal tjekke min mysql database om brugeren er logget ind, og så lade personen se siden...
ja men hvis du så logger ind, går ind på den beskyttede side, altså som bliver sat ind via header, ville man så ikke kunne få adressen på den side i headeren ved et højre klik - properties ?
hmm, er lidt forvirret, jeg legede lidt med noget alla jeres ideer her... Ehm, her er hvad jeg selv lige kom op med, ikke noget der er testet, men noget jeg lige vil have feedback på... finder lige noget af koderne, så i kan følge med...
Her er min ide omkring det hvert fald:
<? session_start();
include 'db.php';
$username = $_POST['username']; $sql = mysql_query("SELECT * FROM users WHERE username='$username' AND activated='1'"); $login_check = mysql_num_rows($sql);
if($login_check > 0) { header("location: http://www.en-anden-side.php") } else{ echo "You need to login to see this page! <br />"; include 'login_form.html'; }
Det ser da meget fornuftigt ud... Men jeg håber dit system er lidt mere sikkert end bare et brugernavn. Og hvis der skal være flere sider skal du også ud i noget med session
ja, altså siden er jo ikke mere beskyttet end alle kan tilgå den når du ikke bruger sessions! Hvis google finder siden, eller en anden får URL´en kan man jo uden videre komme ind på den.
Man starter med at logge ind via en html form, som smider infoen ind i en checkuser.php fil der kan ses neden under. Når man så er logget ind vil jeg gerne have at man kan gå ind på en side, beskyttet side altså, og på den side, skal den tjekke om man er logget på inden den viser indholdet... Hvis man ikke er logget ind, får man beskeden om at logge ind før man fortsætter...
mysql_query("UPDATE users SET last_login=now() WHERE userid='$userid'");
header("Location: login_success.php"); } } else { echo "You could not be logged in! Either the username and password do not match or you have not validated your membership!<br /> Please try again!<br />"; include 'login_form.html'; } ?>
Ja som i kan se tog jeg noget af den kode ud og brugte den til en beskyttet side... Sådan jeg mener det vil virke, men er jo n00b til php :D
hmm... Ja det er jo det der er problemmet... Man skal ikke se siden hvis man ikke er logget ind... Vil have en sikker side, hvor man skal være registreret for at... eksempelvis hente nogle filer vi laver til vores brugere!
Så hvis man ikke er registreret skal man ikke have adgang til filerne...
Ser helt fint ud, men ville også lige lave en if $_SESSION['logind'] eller et andet navn. Så kan du bare tilføje det her på alle sider der kræver at man er logget ind:
if (!$_SESSION['logind'] == true) { //indhold på den hemmelige side ;) } else { echo "Du skal være logget ind for at se siden"; }
Det kan man heller ikke hvis du bruger mit sidste forslag.
Derudover skal der selvfølgelig være en database forespørgsel hvor du laver noget ala: $rs = "select * from TABEL WHERE brugernavn='$user' AND kode='$kode'"
jamen den linie i bruger der: "(!$_SESSION['logind'] == true)" logind, er det navnet på den session ? Og hvordan "opretter" jeg det navn så jeg kan bruge det... Det skal vel være på checkuser siden når de logger ind ?
lav en forespørgsel i databasen og find det antal brugere som har det indtastede brugernavn og kode(enten en eller nul). Hvis der er nul sættes $_SESSION['logind']=false;
hehe petan, du skal nok få point :) tror vist du har fortjent dem... men kan du ikke skære det ud i pap for mig... længere oppe pastede jeg koden fra den side hvor useren bliver tjekket når de logger ind, om user og pass matcher i databasen... I den kode skal jeg have added:
hvis du bruger ovenstående har du jo ikke nogen sikkerhed, medmindre du også tjekker på den side du sender vedkommende videre til! Ellers ja, så kan det bruges.
Det kan laves på mange forskellige måder, det vigtigste er bare at du laver det således at en bruger ikke kan opholde sig på en hemmeligt side medmindre hans session['etellerander'] er true.
og hvis $_SESSION['logind'] kan have hvilket som helst navn, så skal det jo også "oprettes" et sted, hvor og hvordan ? Jeg mener... Skal jeg adde det i usercheck.php koden, eller skal det addes et andet sted...
Eller skal den have sit HELT eget, bare for at være sikker :D
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.