PHP och MySQL

Avdelningen för webbrelaterad programmering och grafisk design.
Post Reply
User avatar
Turrican
Posts: 36
Joined: 2002-12-09 22:22:23
Location: Falun
Contact:

PHP och MySQL

Post by Turrican »

För att försöka lära mig PHP och MySQL håller jag för närvarande på med ett inloggningsystem där man kan registrera en användare och sedan logga in med den. Väl inne kan man byta lösenord, men sen ska det finnas fler funktioner som inte är tillgängliga för alla, utan bara de som är administratörer. Det är här problemen uppstår.
Jag har i min databas en tabell med fyra kolumner: "id", "username", "password" och en som heter "admin". De första kanske ni kan räkna ut vad de används till. I den sista sparas "y" eller "n", beroende på om man är administratör eller inte. Det jag vill att skriptet ska kolla är om användaren har ett "y" i sin kolumn "admin", har användaren det så ska det visas lite alternativ, annars inget alls.
<bupp2> Det går att kombinera CS med porr. Jag känner en som har lagt in en porrbild vid consolen och rycker i baguetten när han har dött.
User avatar
pwm
Skribent
Posts: 1261
Joined: 2003-11-22 15:51:44
Location: Umeå

Post by pwm »

Turrican wrote:Det är här problemen uppstår.
Skulle du kanske även kunna skriva din fråga, eller ange vad problemet är?
-Tbred 2700 @ 2.4GHz, 1024MB, WinXP Prof, 800GB
-Tbred 2600 @ 2.225GHz, 1024MB, Linux, 1353GB
-Tbred 1700 @ 1.75GHz, 1024MB, WinXP Prof, 444GB
-P4 3.06GHz, 1024MB, WinXP Prof, 120GB
-PII 2x400MHz, 512MB, Win2k Prof, 79GB
User avatar
Turrican
Posts: 36
Joined: 2002-12-09 22:22:23
Location: Falun
Contact:

Post by Turrican »

pwm wrote:
Turrican wrote:Det är här problemen uppstår.
Skulle du kanske även kunna skriva din fråga, eller ange vad problemet är?
Så pinsamt. Jag tyckte jag utrryckt mig ganska väl, men nåja. Det jag inte klarar av är att se till att bara de med administratörsrättigheter ska få se extra alternativ. Vanliga användare ska kunna byta lösenord, medan adminstratörer ska kunna göra det, men även ta bort användare och ge andra personer administratörsrättigheter.
Var det tydligare?
<bupp2> Det går att kombinera CS med porr. Jag känner en som har lagt in en porrbild vid consolen och rycker i baguetten när han har dött.
User avatar
Niklas Berggren
Hedersbit
Posts: 3524
Joined: 2002-03-08 17:53:04
Location: Göteborg (Skövde)
Contact:

Post by Niklas Berggren »

Turrican wrote:Så pinsamt. Jag tyckte jag utrryckt mig ganska väl, men nåja. Det jag inte klarar av är att se till att bara de med administratörsrättigheter ska få se extra alternativ. Vanliga användare ska kunna byta lösenord, medan adminstratörer ska kunna göra det, men även ta bort användare och ge andra personer administratörsrättigheter.
Var det tydligare?
Utan kod blir det svårt att hjälpa dig. Visa oss stycket där du försöker åstadkomma ovanstående så blir det enklare.
"How about the government sticks to courts, police, defense and corruption and leave compassion to the people who have it?" - Penn Jillette.
User avatar
Peter Wall
Hedersbit
Posts: 7026
Joined: 2002-03-08 0:52:56
Location: Stockholm
Contact:

Post by Peter Wall »

Vad jag skulle ha försökt med, obs! jag är inte bra på det här så ;) , är att ta en select-sats som väljer ut den kolumnen bara för just den inloggade användaren. Sedan kör du en if-sats som kollar av värdet du fick fram och visar alternativen som ska visas då. :)

Alla l33t haxx0rz får ursäkta om jag gjorde bort mig nu ^^
Diplomerad webbutvecklare
Microsoft Certified Professional Windows 2003
Microsoft Certified Technology Specialist Windows Vista
"Did you know kidneys and applesauce are a delicacy in Sweden? I'm gonna get my applesauce back!"
User avatar
Hein
Posts: 1291
Joined: 2002-03-09 19:38:38
Location: Norrland
Contact:

Post by Hein »

Korrekt Punisher.

Så som Punisher skriver, när användaren loggar in så kör du en select-sats som väljer datan för bara den användaren, om då kolumen admin har ett y så visa detta, annars icke

Ett exempel bara

Code: Select all

mysql_connect('localhost','hein','leethaxxormaxxorflaxxorsaxxor'); // Skapa en mysqlanslutning
mysql_select_db('users'); // Väljer rätt DB

$sQuery = mysql_query("select adminRights from userData where user = 'Hein'") or die(mysql_error()); // Skickar en förfrågan att få datan ur adminRights där användaren är Hein annars om någe är galet, skriv ut felmeddelandet

$vFetch = mysql_fetch_assoc($sQuery); // Hämtar datan

    if($vFetch['adminRights'] == 'y') // Om adminRights är y, dvs yes
	 {
	 echo 'Du är Admin'; // Skriv ut att man är admin
	 } else {
    	    echo 'Du är icke Admin'; // Annars skriv ut att man inte är admin
           }
. .. ... .... ..... ...... ....... ....... ..........
User avatar
Peter Wall
Hedersbit
Posts: 7026
Joined: 2002-03-08 0:52:56
Location: Stockholm
Contact:

Post by Peter Wall »

Hein, hur skulle man i PHP göra om Hein till något dynamiskt? Beroende på vad du loggar in med? Session username dvs. :)
Diplomerad webbutvecklare
Microsoft Certified Professional Windows 2003
Microsoft Certified Technology Specialist Windows Vista
"Did you know kidneys and applesauce are a delicacy in Sweden? I'm gonna get my applesauce back!"
User avatar
Hein
Posts: 1291
Joined: 2002-03-09 19:38:38
Location: Norrland
Contact:

Post by Hein »

Ptja, man har ett "mellanting" man kan gå via, dvs Login->"mellantinget"->sida

isf kan man skickas till en sida som först kontrollerar om lösenordet stämmer överens med användarnamnet, och om det gör det sätt $_SESSION['username'] till det användarnamnet och skicka till nästa sida.

typ

Code: Select all

<!-- login.php -->
<form method="post" action="access.php">
Användare: <br />
<input type="text" name="username" /><br />
Lösenord: <br />
<input type="password" name="password" /><br />
<input type="submit" name="submit" value="Skicka">
</form>

<!-- access.php -->

<?php
session_start(); // Kolla www.php.net/session_start ,orkar inte förklara :P

mysql_connect('localhost','hein','leethaxxormaxxorflaxxorsaxxor'); // Skapa en mysqlanslutning
mysql_select_db('users'); // Väljer rätt DB

$sQuery = mysql_query("select user,password from userData where user = '{$_POST['username']'") or die(mysql_error()); // Skickar en förfrågan att få datan ur username och password där användaren är det man skrev i formuläret (username) annars om någe är galet, skriv ut felmeddelandet

$vFetch = mysql_fetch_assoc($sQuery); // Hämtar datan

    if($vFetch['username'] == $_POST['username'] && $vFetch['password'] == $_POST['password']) // Om användaren stämmer överns med lösenordet
	{
	$_SESSION['user'] = $_POST['username']; // Skapa Sessionen user och lägger dit användarnamnet
    header('Location: main.php'); // Skickas till main.php
    die(); // Dör för vi ska förflytta oss
	} else {
    	   echo 'Du skrev fel på användarnamnet eller lösenordet, försök igen'; //Om inte användarnamnet stämmer överns med lösenordet
           }
?>

<!-- main.php -->
<?php
session_start(); // Kolla www.php.net/session_start ,orkar inte förklara :P

if(isset($_SESSION['user']) && !empty($_SESSION['user'])) // Om sessionen är satt och inte är tom visa då sidan (lite säkerhet)
{

mysql_connect('localhost','hein','leethaxxormaxxorflaxxorsaxxor'); // Skapa en mysqlanslutning
mysql_select_db('users'); // Väljer rätt DB

$sQuery = mysql_query("select adminRights from userData where user = '{$_SESSION['user']}'") or die(mysql_error()); // Skickar en förfrågan att få datan ur adminRights där användaren är det vi lagrade i sessionen annars om någe är galet, skriv ut felmeddelandet

$vFetch = mysql_fetch_assoc($sQuery); // Hämtar datan

    if($vFetch['adminRights'] == 'y') // Om adminRights är y, dvs yes
    {
    echo 'Du är Admin'; // Skriv ut att man är admin
    } else {
           echo 'Du är icke Admin'; // Annars skriv ut att man inte är admin
           }
} else {
	   echo 'Tror du är en haxxorrerz?'; //Annars visa inte sidan
       }
?>
OBS. Detta är väldigt basic, man kan tex kör en md5/sha1 på lösenordet och användarnamnet tex för att få lite mer säkerhet...

Men tänkte hålla mig till väldigt basic så folk kanske förstår :P
. .. ... .... ..... ...... ....... ....... ..........
User avatar
Peter Wall
Hedersbit
Posts: 7026
Joined: 2002-03-08 0:52:56
Location: Stockholm
Contact:

Post by Peter Wall »

Mhm. Jag visste hur det gick till i "teorin" eftersom jag har löst det i VS.NET / C# ville bara se hur du löste det i PHP. Tack så mkt. :)
Diplomerad webbutvecklare
Microsoft Certified Professional Windows 2003
Microsoft Certified Technology Specialist Windows Vista
"Did you know kidneys and applesauce are a delicacy in Sweden? I'm gonna get my applesauce back!"
User avatar
Turrican
Posts: 36
Joined: 2002-12-09 22:22:23
Location: Falun
Contact:

Post by Turrican »

Hein wrote:Korrekt Punisher.

Så som Punisher skriver, när användaren loggar in så kör du en select-sats som väljer datan för bara den användaren, om då kolumen admin har ett y så visa detta, annars icke

Ett exempel bara

Code: Select all

mysql_connect('localhost','hein','leethaxxormaxxorflaxxorsaxxor'); // Skapa en mysqlanslutning
mysql_select_db('users'); // Väljer rätt DB

$sQuery = mysql_query("select adminRights from userData where user = 'Hein'") or die(mysql_error()); // Skickar en förfrågan att få datan ur adminRights där användaren är Hein annars om någe är galet, skriv ut felmeddelandet

$vFetch = mysql_fetch_assoc($sQuery); // Hämtar datan

    if($vFetch['adminRights'] == 'y') // Om adminRights är y, dvs yes
	 {
	 echo 'Du är Admin'; // Skriv ut att man är admin
	 } else {
    	    echo 'Du är icke Admin'; // Annars skriv ut att man inte är admin
           }
Med lite modifikation funkade det där precis som jag ville. Tack så mycket Hein.
<bupp2> Det går att kombinera CS med porr. Jag känner en som har lagt in en porrbild vid consolen och rycker i baguetten när han har dött.
User avatar
Hein
Posts: 1291
Joined: 2002-03-09 19:38:38
Location: Norrland
Contact:

Post by Hein »

No problemo
. .. ... .... ..... ...... ....... ....... ..........
Post Reply