/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Login
Fra : Søren


Dato : 29-09-02 18:53

Jeg har i "Professional PHP4" isbn 1-861006-91-8 været ved at se på den
kode, der skal til for at jeg fra login.php kan blive omdirigeret til
search.php Der skal indtastes password og username, som bliver tjekket i
MySQL tabllen, og er det korrekt indtastet bliver man videre dirigeret til
search.php. Den kode, som bogen skriver skal være på login.php, er vist
nedenunder. Det som undrer mig er, at der ikke skal noget kode i filen
search.php for indtaster jeg den direkte URL adresse til search.php kan jeg
vel komme ind på siden udenom login ? Er der nogen i NG der kan fortælle
mig, om dr mangler noget i koden ?

Søren


Koden i <body> til login.php:

<center><h3><b>Sikker log in</b></h3></center>

<?php if (isset($success) && !$success): ?>
<div style="color: #cc0000"><b>Login failure!</b></div>
<?php endif; ?>

<form action="login.php" method POST">
username: <input name="username" type="text"><br>
password: <input name="password" type="password"><br>
<input type="submit" value="Log ind">
</form>

<?php
//Attempt to fetch the form variables
$username = $HTTP_POST_VARS['username'];
$password = $HTTP_POST_VARS['password'];

//if the username and password are valid,
//redirect the user to the search page.
if (isset($username) && isset ($password)) {

//connect to the database
$conn = mysql_connect('localhost', 'jon', 'secret')
or die(mysql_error());
mysql_select_db('Library', $conn)
or die (mysql_error());

//Query the database
$sql = "SELECT username FROM users WHERE username = '" .
$username . "' and password = '" . $password . "'";
$result = mysql_query($sql, $conn);

//Test the query result
$success = false;
if (@mysql_result($result, 0, 0) == $username) {
$success = true;
}

//close the connection to the database
mysql_close($conn);

//Redirect the user upon a success login
if ($success) {
header('location: http://www.example.com/search.php');
}
}
?>



 
 
Jan Fjeldmark (29-09-2002)
Kommentar
Fra : Jan Fjeldmark


Dato : 29-09-02 19:59

Søren wrote:
> Er der nogen i NG der kan fortælle
> mig, om dr mangler noget i koden ?

Nu har jeg ikke lige tid til at granske din kode, og jeg kender ikke
bogen. Men jeg vil mene at du har ret, og at login.php er nødt til at
medsende en information til search.php om at login er gået godt. Det kan
bedst ske ved hjælp af session variable.

--
Venlig hilsen
Jan Fjeldmark
<http://janf.dk>


Niels Andersen (29-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 29-09-02 20:00

Søren wrote in <S5Hl9.55716$Qk5.2031973@news010.worldonline.dk>:
> Det som undrer mig er, at der ikke skal noget kode i filen
> search.php for indtaster jeg den direkte URL adresse til search.php kan
> jeg vel komme ind på siden udenom login ?

Ja det er da ret fjollet.

De login-ting jeg har set plejer at være baseret på, at koden ligger i en
fil for sig selv. De sider, som skal være beskyttede "includer" så den fil.

Princippet plejer at være:

<?php
if ($username AND $password) {
$loggedin = check_username_and_password($username, $password);
}

if (!$loggedin) {
echo "Du skal være logget ind for at se denne side";
echo $loginform;
exit();
}
?>

Altså, hvis man ikke er logget ind, så bliver "exit()" fyret af. Alt på den
"hemmelige" side efter koden bliver includet, bliver aldrig kørt.

> Er der nogen i NG der kan
> fortælle mig, om dr mangler noget i koden ?

Så vidt jeg kan se, så mangler ca. halvdelen. Den kode kontrollerer kun om
brugernavn og kodeord er korrekt, men der er ikke noget sikkerhed i det.

Prøv at "lege med" i første omgang, der må komme noget mere senere i bogen.
Forfatteren kalder det selv "sikker log in", så det må da komme. :)

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste