<?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! :)
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; } ?>
Offtopic: On tuo sulkutagillinenkin malli validia XHTML:ää, selaintukea tosin en lupaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.