14. maj 2007 - 14:33Der er
23 kommentarer og 2 løsninger
Login system
Hej
Jeg vil gerne have hjælp til sådan noget med PHP. Så jeg vil gerne have at hvis der er nogle der gider, hjælpe mig med at lave mit eget login system med en profil og med et besked system så man kan skrive med andre. Jeg håber ikke det bliver for svært, for mig og den der hjælper tak.
Jeg kan rigtig lidt. Jeg er rigtig glad for de links du har sendt mig, men kan du ikke lige fortælle mig, hvilket af dem der er bedst, fordi jeg har lidt forstand på PHP, så jeg kan bruge mest tid på den artikel som er bedst.
Den artikel du finder her på eksperten.dk - http://www.eksperten.dk/artikler/669 er bestemt ikke tosset. Den lære dig at kode login op mod en mysql-database, samt gemme data i sessions. Så er du nået langt, når du har kodet et sådan system og ikke mindst forstår koden.
Når du når til en funktion, så bør du undersøge hvad den funktion gør, og det kan du gøre på php.net Det er eneste måde du lærer php på.
Jeg vil give jacobdo ret :) det er en god artiktel.
Jeg vil også forslå dig at kigge her http://www.phpartikler.dk/index.php hvis du er meget ny til php, der er masse gode af artiktler der kan hjælpe dig med at forstå en masse i php.
Jeg synes også at den første er den bedste, men under kommentar er der nogle der skriver at den er forkert, er det rigtig at det er forkert? .Okay tak tjekker det lige
Alt kan for det meste laves anderledes og smartere. Og ja, nogle ting i den artikel kunne være lavet anderledes. Men prøv nu bare, du skal jo starte et sted.
Og uden at være fræk over for dig, men du kan jo også blive ved med at spørge, og så lære du jo aldrig sproget. Du skal bare kaste dig ud i det, det er eneste måde at lære det på!
check.php<html> <body> <?php //Vi starter med at defindere variabler, så det bliver nemmere at tilkomme dem senere. $brugernavn = $_POST['brugernavn']; $kodeord = $_POST['kodeord'];
//Tjekker om både brugernavn og kodeord er indtastet. if(empty($brugernavn) || empty($kodeord)) { //Sender brugeren tilbage til formular.htm ved brug af en header header("location. formular.htm"); exit; } //Hvis både brugernavn og kodeord er sat går vi videre. else { //Definerer det rigtige kodeord og det rigtige brugernavn. //Vi vil senere gå videre ind i dette, //og se på hvordan vi kan implementere MySQL ind i vores script $rigtigt_brugernavn = 'Jens'; $rigtig_kode = 'hallo';
//Tjekker om $brugernavn er lig med det rigtige brugernavn, og om $kodeord er lig med det rigtige kodeord if($brugernavn == $rigtige_brugernavn && $kodeord == $rigtige_kode) { //Brugeren har indtastet det rigtige brugernavn og kodeord. echo "Tillykke, du er nu logget ind."; /* Det er normalt her man inkluderer filer man ikke må se, hvis man ikke er logget ind. Her er det også muligt at gemme brugerens kodeord i sessioner, så brugeren også er logget ind når han navigerer rundt på din hjemmeside. */ } else { //Skriver til brugeren at han har fået forkert brugernavn echo "Det indtastede brugernavn og/eller kodeord var forkert"; echo "<br><br>"; //Laver et link som brugeren kan trykke på, for at komme tilbage til formular.htm echo "Tryk <a href=\"formular.htm\">her</a> for at komme tilbage"; } }
?> <?php $link = mysql_connect("server", "brugernavn", "kodeord"); mysql_select_db("databasenavn", $link); ?><?php //Helt i starten starter vi sessioner, og forbinder til vores database session_start(); $link = mysql_connect("server", "brugernavn", "kodeord"); mysql_select_db("databasenavn", $link);
//Tjekker om både brugernavn og kodeord er indtastet. if(empty($_POST['brugernavn']) || empty($_POST['kodeord'])) { //Sender brugeren tilbage til formular.htm ved brug af en header header("location. formular.htm"); exit; } //Hvis både brugernavn og kodeord er sat, går vi videre. else { /* Her bruger vi databasen for første gang, idet vi nu tjekker om der er en bruger der har det brugernavn, der er indtasetet i formularen. Vi bruger or die(mysql_error()) til at få mysql til at udskrive en fejl, hvis der er noget galt med databasekaldet. */ $query = mysql_query("SELECT * FROM brugere WHERE brugernavn='". $_POST['brugernavn'] ."'") or die(mysql_error()); //Tjekker om der er én rækker i databasen der har det indtasetde brugernavn //Dette gør dog, at flere brugere ikke må have samme brugernavn! if(mysql_num_rows($query) == '1')) { //Laver databasekaldet om til en liset (et array) i php. $row = mysql_fetch_array($query); //Tjekker om kodeordet i databasen er lig med det indtastede kodeord if($row['kodeord'] == $_POST['kodeord']) { //Brugeren har indtastet rigtige oplysninger, nu skal han gemmes i sessioner $_SESSION['brugernavn'] = $_POST['brugernavn']; //Derudover skal han sendes til en hemlig side, hvorpå der bliver tjekket om han er logget ind header("location: hemligside.php"); } else { //Brugeren har skrevet et forkert kodeord //Sender brugeren tilbage til formular.htm ved brug af en header header("location. formular.htm"); exit; } } //Brugernavnet fandtes ikke i databasen, derfor skal der udskrives en fejl. else { //Brugeren har skrevet et forkert brugernavn //Sender brugeren tilbage til formular.htm ved brug af en header header("location. formular.htm"); exit; } }
?> </body> </html>
Det her kom også ind i check.php: <?php $link = mysql_connect("server", "brugernavn", "kodeord"); mysql_select_db("databasenavn", $link); ?>. Ved ikke om det er en fejl eller ej, det er koden til mysql_connect()
<body> <? //Starter endnu engang sessionerne øverst på siden, samt forbinder til databasen session_start(); $link = mysql_connect("server", "brugernavn", "kodeord"); mysql_select_db("databasenavn", $link);
//Tjekker om man er logget ind if(!empty($_SESSION['brugernavn'])) { //Laver en query der finder ens brugerid i databasen $query = mysql_query("SELECT * FROM brugere WHERE brugernavn='". $_SESSION['brugernavn'] ."'") or die(mysql_error()); $row = mysql_fetch_assoc($query); //Man er logget ind, og kan derfor se det hemlige indhold echo "Dit brugerid er: ". $row['id']; } else { //Brugeren er ikke logget ind echo "Du er ikke logget ind. Du skal ikke prøve at snyde på min hjemmeside!"; }
Kan godt se det er uoverskueligt så laver det lige om. formular.htm <html> <head> <title>Loginformular</title> </head> <body> <form name="min form" id="min form" method="post" action="check.php"> Brugernavn: <input type="text" name="brugernavn"><br> Kodeord: <input type="password" name="kodeord"> <input type="submit" name="login" value="Login"> </form> </body> </html>
check.php <html> <body> <?php //Vi starter med at defindere variabler, så det bliver nemmere at tilkomme dem senere. $brugernavn = $_POST['brugernavn']; $kodeord = $_POST['kodeord'];
//Tjekker om både brugernavn og kodeord er indtastet. if(empty($brugernavn) || empty($kodeord)) { //Sender brugeren tilbage til formular.htm ved brug af en header header("location. formular.htm"); exit; } //Hvis både brugernavn og kodeord er sat går vi videre. else { //Definerer det rigtige kodeord og det rigtige brugernavn. //Vi vil senere gå videre ind i dette, //og se på hvordan vi kan implementere MySQL ind i vores script $rigtigt_brugernavn = 'Jens'; $rigtig_kode = 'hallo';
//Tjekker om $brugernavn er lig med det rigtige brugernavn, og om $kodeord er lig med det rigtige kodeord if($brugernavn == $rigtige_brugernavn && $kodeord == $rigtige_kode) { //Brugeren har indtastet det rigtige brugernavn og kodeord. echo "Tillykke, du er nu logget ind."; /* Det er normalt her man inkluderer filer man ikke må se, hvis man ikke er logget ind. Her er det også muligt at gemme brugerens kodeord i sessioner, så brugeren også er logget ind når han navigerer rundt på din hjemmeside. */ } else { //Skriver til brugeren at han har fået forkert brugernavn echo "Det indtastede brugernavn og/eller kodeord var forkert"; echo "<br><br>"; //Laver et link som brugeren kan trykke på, for at komme tilbage til formular.htm echo "Tryk <a href=\"formular.htm\">her</a> for at komme tilbage"; } }
?> <?php $link = mysql_connect("server", "brugernavn", "kodeord"); mysql_select_db("databasenavn", $link); ?><?php //Helt i starten starter vi sessioner, og forbinder til vores database session_start(); $link = mysql_connect("server", "brugernavn", "kodeord"); mysql_select_db("databasenavn", $link);
//Tjekker om både brugernavn og kodeord er indtastet. if(empty($_POST['brugernavn']) || empty($_POST['kodeord'])) { //Sender brugeren tilbage til formular.htm ved brug af en header header("location. formular.htm"); exit; } //Hvis både brugernavn og kodeord er sat, går vi videre. else { /* Her bruger vi databasen for første gang, idet vi nu tjekker om der er en bruger der har det brugernavn, der er indtasetet i formularen. Vi bruger or die(mysql_error()) til at få mysql til at udskrive en fejl, hvis der er noget galt med databasekaldet. */ $query = mysql_query("SELECT * FROM brugere WHERE brugernavn='". $_POST['brugernavn'] ."'") or die(mysql_error()); //Tjekker om der er én rækker i databasen der har det indtasetde brugernavn //Dette gør dog, at flere brugere ikke må have samme brugernavn! if(mysql_num_rows($query) == '1')) { //Laver databasekaldet om til en liset (et array) i php. $row = mysql_fetch_array($query); //Tjekker om kodeordet i databasen er lig med det indtastede kodeord if($row['kodeord'] == $_POST['kodeord']) { //Brugeren har indtastet rigtige oplysninger, nu skal han gemmes i sessioner $_SESSION['brugernavn'] = $_POST['brugernavn']; //Derudover skal han sendes til en hemlig side, hvorpå der bliver tjekket om han er logget ind header("location: hemligside.php"); } else { //Brugeren har skrevet et forkert kodeord //Sender brugeren tilbage til formular.htm ved brug af en header header("location. formular.htm"); exit; } } //Brugernavnet fandtes ikke i databasen, derfor skal der udskrives en fejl. else { //Brugeren har skrevet et forkert brugernavn //Sender brugeren tilbage til formular.htm ved brug af en header header("location. formular.htm"); exit; } }
?> </body> </html>
Har sat den her kode:<?php $link = mysql_connect("server", "brugernavn", "kodeord"); mysql_select_db("databasenavn", $link); ?> i check.php
<body> <? //Starter endnu engang sessionerne øverst på siden, samt forbinder til databasen session_start(); $link = mysql_connect("server", "brugernavn", "kodeord"); mysql_select_db("databasenavn", $link);
//Tjekker om man er logget ind if(!empty($_SESSION['brugernavn'])) { //Laver en query der finder ens brugerid i databasen $query = mysql_query("SELECT * FROM brugere WHERE brugernavn='". $_SESSION['brugernavn'] ."'") or die(mysql_error()); $row = mysql_fetch_assoc($query); //Man er logget ind, og kan derfor se det hemlige indhold echo "Dit brugerid er: ". $row['id']; } else { //Brugeren er ikke logget ind echo "Du er ikke logget ind. Du skal ikke prøve at snyde på min hjemmeside!"; }
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.