10. september 2008 - 20:54Der er
19 kommentarer og 1 løsning
Login system med brugere
Hejsa,, jeg sidder og arbejder med et login system der differencere brugere. Det vil sige, hver bruger vil blive sendt til en unik side. Hvis bruger1 logger på vil han scriptet sende ham til side1 og hvis bruger2 logger på vil han komme til side2 osv. jeg har pt. systemet til alm login. hvor hver bruger sendes til samme side. Derfor mangler jeg blot den funktion der sender brugeren til en unik side. Derudover vil jeg gerne have side hvor jeg som admin kan oprette brugere og i den proces bestemme til hvilke sider de skal sendes. Jeg håber meget at nogen af jer eksperter vil komme mig til undsætning.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Det er ikke svært. Jeg går ud fra at du henter nogle oplysninger om brugeren et eller andet sted fra? Det du gør, er bare at gemme navnet på den side de skal sendes til, sammen med brugerens andre oplysninger. Så sender du dem bare hen til den pågældende side.
Moddi: Jeg skal jo bruge en script del der via login oplysningerne identificere brugeren og automatisk sender vedkomne videre. jeg kunne forstille mig det via en if() funktion, men dog uden jeg har andre ideer om hvordan det gøres.
Synes godt om
Slettet bruger
11. september 2008 - 02:54#3
Hvis du har dine oplsyninger for brugerne i en database, så laver du et felt der f.eks. hedder redirectPage eller bare page, alt efter hvad du ønsker, med datatypen varchar(x) her ændre du x til det antal tegn du maks kommer til at bruge, kunne være 15.
Men hvorfor hver sin side, og ikke en der ligner de andre med forskellige oplysninger på? Hvor mange brugere skal systemet kunne rumme? Hvis det bare er 4-5 stykker er det ikke et problem med din måde, men går hen og bliver mere langhåret hvis du skal ha' 250+ brugere eller i den dur.
Men hvis du evt. kan vise lidt kode fra dit login, så kan vi kigge på hvordan det skal flettes ind.
Hvis vi siger at du har en database med alle oplysningerne om brugeren. I den har du så også lavet et felt der hedder 'Forside'. Bruger 1 har side 17 som forside, Bruger 3 har side 5 som forside osv. I rækken med bruger 1's data, står der altså 'side17.php' i feltet forside.
Så kan du bare hente feltet Forside's indhold og så laver du noget i stil med <?php header("Location: " . $forside_fra_db); ?>
tak for jeres hurtige svar, jeg paster lidt af min kode herunde for at give jer et bedre indblik i det hele.
CREATE TABLE `members` ( `id` int(4) NOT NULL auto_increment, `username` varchar(65) NOT NULL default '', `password` varchar(65) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=2 ;
-- -- Dumping data for table `members` --
INSERT INTO `members` VALUES (1, 'DIT NAVN', 'DIT PASSWORD');
og herunder er min Checklogin.php
<?php ob_start(); $host=""; // Host name $username="xx"; // Mysql username $password="xx"; // Mysql password $db_name=""xx; // Database name $tbl_name="xx"; // Table name
// Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB");
// Define $myusername and $mypassword $myusername=$_POST['myusername']; $mypassword=$_POST['mypassword'];
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; $result=mysql_query($sql);
// Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){ // Register $myusername, $mypassword and redirect to file "login_success.php" session_register("myusername"); session_register("mypassword"); header("location:login_success.php"); } else { echo "Forkert brugernavn eller kodeord"; }
ob_end_flush(); ?>
Synes godt om
Slettet bruger
11. september 2008 - 13:48#7
Du kan tilføje evt. hvis det skal være en side de skal sendes til: CREATE TABLE..... ( {....} `page` varchar(65) NOT NULL default '', ) TYPE=MyISAM AUTO_INCREMENT=2 ;
Så ledes at du ikke har en ukrypteret $password "læggende", ville ændre $mypassword = md5($_POST['mypassword']);
Forstår ikke rigtigt hvorfor du kryptere det, du bruger det jo ikke rigtig til noget; En idé ville være at ha' passwordsene i databasen krypteret også, og så tjekke op mod dette i stedet.
Du kan så her tilføje $row = mysql_fetch_array($result);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; $result=mysql_query($sql); $row = mysql_fetch_array($result);
SÅ kan vi i din if($count.....) { //brug dataen fra databasen //$row['page']; kunne så være den nye direct side. header("location:login_success.php"); }
qtax; Jeg forestiller mig noget lign dit forslag. At oprette en række i databasen hvori der gemmes siden brugeren skal sendes til. Men er det ikke muligt at ændre checklogin.php således at den identificere login oplysninger og så sender til siden der er registreret til brugeren.
Det er den specifikke kodning jeg er i tvivl om.
Jeg kan forstå at nedenstående kodedel siger at hvis brugernavn og password er korrekt sendes brugeren til login_succes.php
if($count==1){ // Register $myusername, $mypassword and redirect to file "login_success.php" session_register("myusername"); session_register("mypassword"); header("location:login_success.php"); } else { echo "Forkert brugernavn eller kodeord";
så det der skal ændres er vel "bare" den location der sendes til. Som du nok allerede kan se er jeg ikke så erfaren med php.
Denne system skal bruges til at mine brugere kan logge ind og se den hjemmeside jeg udvikler for dem. Den store sikkerhed er derfor næppe nødvendig men dog heller ikke ren "HTML eller Javascript agtigt"
// Define $myusername and $mypassword if(get_magic_quotes_gpc()) // Hvis der automatisk tilføjes slashes til specialtegn, fjern dem da. { $myusername=stripslashes($_POST['myusername']); $mypassword=stripslashes(md5($_POST['mypassword'])); // Krypter også password } else { $myusername=$_POST['myusername']; $mypassword=md5($_POST['mypassword']); // Krypter også password }
// Escape alle specialtegn i querien også. Så får du ikke så mange uheldige overraskelse i form af hacking. $sql="SELECT * FROM $tbl_name WHERE username='" . mysql_real_escape_string($myusername) . "' and password='" . mysql_real_escape_string($mypassword) . "'"; $result=mysql_query($sql);
// Mysql_num_row is counting table row $count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){ // Register $myusername, $mypassword and redirect to file "login_success.php" session_register("myusername"); session_register("mypassword"); // Jeg ville personligt aldrig gemme et password i f.eks. sessions. header("location:" . $row['page']); exit; } else { echo "Forkert brugernavn eller kodeord"; }
Variablen $row['page'] skulle gerne indeholde indholdet fra feltet i din database med samme navn. Bemærk der er forskel på store og små bogstaver
Så det du siger er at jeg kan erstatte min oprindelige kode med denne bid ,, så vil brugeren blive sendt til den side jeg har i databasen uder "page" ?
du får de 60 point, men hvordan kan jeg lave et form der smider oplysningerne ind i databasen. hvis det kan lade sig gøre vil jeg jo være i stand til at lave nye brugere ved at logge ind på den side :)
Adminkode: (VIGTIGT: Kun du skal have adgang til denne!)
admin.php <?php $host=""; // Host name $username="xx"; // Mysql username $password="xx"; // Mysql password $db_name=""xx; // Database name $tbl_name="xx"; // Table name
// Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB");
Hvis du nu har mange passwords i din database og for ikke selv skal sidde og rette dem alle sammen, så vælger du datatypen varchar(43) for password. Så kan du kører denne sql:
UPDATE xx SET password = md5(password)
Så skulle den gerne være hjemme, men tag lige en backup af databasen før du gør dette.
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.