Avatar billede delphiuser Mester
30. august 2006 - 12:39 Der er 12 kommentarer og
1 løsning

avanceret login

Hej eksperter jeg er i gang med at lave en avanceret login form hvor at jeg kan bestemme hvilke brugere der har adgang til hvad. det vil sige at alt login køre fra en database tabel kaldet brugere...

felter i min tabel brugere

CREATE TABLE `brugere` (
`id` INT NOT NULL AUTO_INCREMENT ,
`user` VARCHAR( 20 ) NOT NULL ,
`pass` VARCHAR( 20 ) NOT NULL ,
`adgang` INT NOT NULL ,
`navn` VARCHAR( 25 ) NOT NULL ,
`alder` VARCHAR( 3 ) NOT NULL ,
`dofb` VARCHAR( 16 ) NOT NULL ,
`mail` VARCHAR( 50 ) NOT NULL ,
`beskrivelse` TEXT NOT NULL ,
`interesser` VARCHAR( 255 ) NOT NULL ,
`billed` VARCHAR( 255 ) NOT NULL ,
`status` VARCHAR( 20 ) NOT NULL ,
`soger` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

her er opbygningen af min adgang...

CREATE TABLE `adgang` (
`id` INT NOT NULL AUTO_INCREMENT ,
`level` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

Her kommer så selve min login form....
index.php

<form action="dologin.php" method="get">
Brugernavn: <input type="text" name="username" size="20" maxlength="20"><br>
Password: <input type="password" name="password" size="20" maxlength="20"><br>
<input type="submit" value="Log på">
</form>

her kommer så min dologin.php

<?php
session_start();
if(isset($_post('submit')) {

mysql_connect("localhost","user","pass") or die(mysql_error());
mysql_select_db("db") or die(mysql_error());

mysql_query("select * from bruger where $user = '$username' AND $pass = '$password' Limit 1);

$check = mysql_query("select adgang from bruger.adgang where $adgang = '$adgang');

?>

Så er jeg gået i stå. kan ikke rigtig finde ud af hvordan jeg så skal køre den videre derfra. men ved heller ikke om det jeg har lavet er rigtigt og om det kan bruges. så håber nogen vil hjælpe mig
Avatar billede sw_red_6 Nybegynder
30. august 2006 - 12:46 #1
Hvad er det du prøver med $check = mysql_query("select adgang from bruger.adgang where $adgang = '$adgang'); ?
Avatar billede delphiuser Mester
30. august 2006 - 13:00 #2
Det skal laves sådan at den skal checke om brugeren har adgang til administrationsdelen eller om det bare er en almindelig bruger
Avatar billede shooka Nybegynder
30. august 2006 - 13:09 #3
Det lyder som om det er et stort system, derfor vil jeg råde dig til at lave en php-fil indeholdende:

<?php
mysql_connect("localhost","user","pass") or die(mysql_error());
mysql_select_db("db") or die(mysql_error());
?>

Hvis du kalder den for mysql.php, så kan du indsætte den på alle siderne sådan:

include "mysql.php";
Avatar billede delphiuser Mester
30. august 2006 - 13:10 #4
den skal simpel og enkelt fortælle om det er en administrator eller om det er en almindelig bruger. men også fortælle om det er en betallende bruger hvis det er...
Avatar billede delphiuser Mester
30. august 2006 - 13:13 #5
så ud fra hvad slags bruger det er der er logget på skal den give de forskellige adgange. Jeg ved der er muligt og jeg skal nok også tilføje noget i min database tabel adgang... håber bare nogen kan hjælpe mig med dette
Avatar billede sw_red_6 Nybegynder
30. august 2006 - 13:13 #6
dvs. at $check osv.osv. skal tjekke om brugeren har adgang?
Så skal der vidst laves lidt om på den skal der ikke?
noget med $tjek = mysql_query("SELECT * FROM adgang WHERE ??? = ??? ") or die(mysql_error());

Hvordan kæder du adgang og brugere sammen, hvis du gør det altså?
Avatar billede shooka Nybegynder
30. august 2006 - 13:14 #7
Du kan roligt fjerne tabellen adgang, og så bare lave en række i tabellen brugere, der hedder:

level. Den skal være enum, og så indtaster du 'normal','vip','admin' som værdi.
Avatar billede delphiuser Mester
30. august 2006 - 13:20 #8
ok det lyder cool...
Avatar billede delphiuser Mester
30. august 2006 - 13:25 #9
lige hvordan skal jeg taste det ind?
Avatar billede delphiuser Mester
30. august 2006 - 13:28 #10
har fået det tastet ind...
Avatar billede shooka Nybegynder
30. august 2006 - 13:45 #11
<?php
session_start();
if($_POST["username"] != "" && $_POST["password"] != "")
{
$user = $_POST["username"];
$pass = $_POST["password"];

$check = mysql_query("SELECT * FROM brugere WHERE user='$user' AND pass='$pass'");
$numcheck = mysql_num_rows($check);
$check1 = mysql_fetch_array($check);
if($numcheck == "1")
{
$_SESSION["id"] = $check1["id"];
echo "Velkommen ".$check1["navn"]."! Du er logget ind.";
}
else
{
echo "Brugernavnet og adgangskoden passer ikke sammen!";
}
}
?>

Så skal du bare indsætte denne kode på alle de sider, der kræver at man er logget ind

<?php
session_start();
if($_SESSION["id"] == "")
{
echo "Du skal være logget ind for at se denne side";
exit;
}
?>

For at holde orden, så pas på med at blande dansk og engelsk sammen. Fx i din tabel username og navn ;)
Avatar billede shooka Nybegynder
01. september 2006 - 18:37 #12
Svar...
Avatar billede shooka Nybegynder
01. september 2006 - 18:38 #13
Og så mangler jeg lige at gøre det til et svar :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester