Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ongelma evästeiden kanssa

sankari [19.04.2006 16:45:06]

#

<?php
 if(isset($_COOKIE["user"]))
  echo "Welcome back ".$_COOKIE["user"]."<br>";
 if($_GET['logout'] == '1') {
  setcookie('user','');
 }
 if($_COOKIE['user'] == 'valid') {
?>
Logged in
<br>
<a href="login.php?logout=1">Logout</a>
<?
 }
 else {
?>
<form method="post" action="login.php">
Username: <input type="text" name="usr"></input><br>
Password: <input type="password" name="pwd"></input><br>
<input type="submit" value="Login"></input>
</form>
<?php
  $usr = 'test';
  $pwd = '1234';
  $validusr = 0;
  $validpwd = 0;
  if(empty($_POST['usr']) || empty($_POST['pwd'])) {
   die('You did not enter username or password');
  }
  else if(!empty($_POST['usr']) && !empty($_POST['pwd'])) {
   //for($var=0;$var<count($usr);$var++) {
    if($_POST['usr'] == $usr)//[$var])
     $validusr = 1;
    if($_POST['pwd'] == $pwd)//[$var])
     $validpwd = 1;
   //}
   if($validusr == 1 && $validpwd == 1) {
    setcookie("user", "valid", time()+36000);
    echo 'Cookie set';
   }
   else {
    die('Invalid username or password');
   }
  }
 }
?>

Ratkaisu keksitty! :)

Lebe80 [19.04.2006 17:12:33]

#

Input -tägiä ei käytetä noin, siihen ei tule sulkevaa tägiä.
Oikeasti se menee suurinpiirtein näin:

<input type="text" name="usr" value="käyttäjä" />

(ei tosin vaikuta tähän ongelmaasi)


Ongelmaan:
Olet kirjoittanut näytölle aikaisemmin kuin olet lopettanut headereiden muokkaamisen (tässä asetat cookieita kirjoittamisen jälkeenkin)

Lisäksi tarkistat tässä ensin onko käyttäjä jo kirjautunut, koska se ei ole näytät kirjautumis sivua uudelleen ja vasta sen jälkeen tarkistat onko käyttäjä lähettänyt kirjautumislomakkeella tietoa.

Ratkaisua:
Ensiksi sinun pitää siis tarkistaa, onko kirjautumislomakkeelta tullut tietoa, sitten kirjata käyttäjä sisään jos salasanat yms. on oikein (asetat cookiet yms).
Sen jälkeen vasta tulostat ruudullu joko kirjautumislomakkeen tai etusivun-kirjautuneille.

Tulevaa:
Näemmä olet aikeissa lukea salasanat tiedostosta, suosittelen käyttämään jotain hash-funktioita yms. mikä hieman suojaisi käyttäjien turvallisuutta.

tässä pieni esimerkki, jonka taidan pikkuhiljaa lisäillä koodivinkkeihin:

<?php
function Salaa($salattava){
$prefix = "oma Suola j0ka seko1ttAa Sala5aNan. Laita Tähän mitä haluat.";
$palauta = strrev(md5( $prefix . $salattava ));
return $palauta;
}

function SalaaKovaa($salattava){
$prefix = "oma Suola, j0ka seko1ttAa Sala5aNan. Laita Tähän mitä haluat...";
$palauta = strrev(sha1($prefix . $salattava).strrev(md5($prefix . $salattava)));
return $palauta;
}

?>

Blaze [19.04.2006 17:46:12]

#

Offtopic: On tuo sulkutagillinenkin malli validia XHTML:ää, selaintukea tosin en lupaa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta