webForumDet fria alternativet

newbee! Förslag på hur bygga lösenordsskydd mha MySQL

PHP

2 svar · 309 visningar · startad av fredriksk

Medlem sedan maj 2001211 inlägg
Frågan#1

Jo alltså..
Har precis gått en PHP kurs och lurar nu lite på hur jag skall lösa login delen på min nya sajt.

Min tanke var (och detta är taget ur förslag på inlupp i kursen) att göra på följande sätt.

Jag har en tabell i SQL som innehåller alla användare jag vill ge tillträde till min sajt. Alla sidor som kräver login inkluderar en php-sida med en funktion som tar ett användarnamn och ett lösenord och testar dessa mot databasen. Funktionen retunerar sedan, säg, true eller false beroende på om användaren är inloggad korrekt eller ej.

En sida som kräver att användaren är inloggad startar en session och om det finns två variabler satta där (säg; $user och $passwd som är satta av en loginsida får man förmoda) så skickar den dessa till funktionen som testar mot databasen.

Sidan som kräver att användaren är inloggad kan sedan agera och skicka rätt html kod beroende på svaret från funktionen.

Detta skall fungera tillfredställande och det skall inte vara helt lätt att försöka fuska och sätta några variabler då det är en funktion som anropas med variabler som KAN vara rätt men även fel. Svaret som erhålls är inte lätt att byta. Åtminstånde påstår de det på kursen ;-)

Ja, jag är rätt tilfreds med lösningen. Lätt att fatta och inte så svårt när man skapar nya sidor som kräver inlogg. Bara att inkludera test.php och anropa funktionen.

Men problemet ligger i att vi på varje sida som kräver inloggning får två if-satser som i pricip bara skickar en echo-sats med html koden beroende på svaret från funktionen. Här blir det inte smidigt om man skulle vilja modifiera koden lite. Inte så smidigt om man tex använder dreamweaver (Jo jag gillar DW, låt oss nu inte ta den diskussionen här ;-) ). Vad jag menar är att all HTML kod "Försvinner" ju i echo satsen och sidan kommer att visas helt tom i dreamweaver. Inte smidigt alltså.

Vet att det finns ett litet annorlunda sätt i PHP med if-satser. Jag tänker då på syntaxen så här...

<?php if(...): ?>

...
...

<?php endif; ?>

Detta borde ju plocka fram HTML koden igen...

Men det kanske finns enklare sätt att lösa testning av inloggning på? Mitt krav är att det skall vara enkelt att infoga testningen på alla sidor som kräver det.

Förslag?
Inga krångliga grejor nu bara... ;-)

Medlem sedan nov. 2000857 inlägg
#2

<?php
if ($inloggad == true)
{
?>
<html-kod>
<?php
}
else
{
?>
<p>HTML-kod...
<?php
}
?>

Medlem sedan maj 2002647 inlägg
#3
<?
session_start();

if(!($_SESSION['user'] || $_SESSION['passwd'])){

  // din html för de inloggade

}
else{

  // din html för ikke inloggade

}
?>
393 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
138 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)