Koitin neuvojen mukaan, muttaen saanut rekisteröitymis juttua toimimaan... Lähdekoodi:
<?php if (($_GET[nimi] == "Ilmari" AND $_GET[salasana] == "ilmari") OR ($_GET[nimi] == "Joni" AND $_GET[salasana] == "joni")) { echo "Tietosi ovat oikein."; } else { echo "Tietosi ovat väärin."; } ?> <A HREF="Membusivu.php">Membuille
Sitten kun klikkasi tota membuille linkkiä niin se valitti seuraavaa:
Warning: Wrong datatype for second argument in call to array_key_exists in /users/karise/public_html/Membusivu.php on line 8
Sinulla ei ole oikeutta nähdä tätä sivua!
Membille sivun koodi on seuraava:
<?php if (!array_key_exists($_GET[nimi], $users) || $users[$_GET[nimi]] <> $_GET[salasana]) { die("Sinulla ei ole oikeutta nähdä tätä sivua!"); } ?> <p> Muahhahahaah </p>
Osaiskos kukaan auttaa mikä on vikana?
Muuta noi, niin koodi on oikeampaa, PHP-tulkki antaa muuten varoituksen:
$_GET[salasana] // väärin $_GET['salasana'] // oikein
Tuo $users
on varmaankin määritelty jossakin? No eipä tietenkään.
Opettelepa tulkitsemaan virheitä: array_key_exists-funktion toinen parametri on väärää tyyppiä. Tarkoittaa siis $users
-muuttujaa.
Tuo kirjautuminen kannattaa toteuttaa kekseillä tai seissioilla. Eli esimerkiksi sulla on yksi lomakesivu, jossa tiedot syötetään ja toinen sivu, jonne tiedot lähetetään ja joka tarkistaa onko käyttäjätiedot oikein. Jos tiedot ovat oikein asetetaan käyttäjälle keksi ja ohjataan salaiselle sivulle. Jos käyttäjätiedot ovat väärin, ohjataan käyttäjä takaisin lomakesivulle.
Sitten jokaisella salaisella sivulla on ihan alussa koodinpätkä, joka tarkistaa onko käyttäjällä keksissä oikeat tiedot. Toisin sanoen tämä koodi kannattaa laittaa omaan tiedostoonsa ja sitten vain includettaa tiedosto jokaiselle salaiselle sivulle, sillä jos haluat muokata tarkistusta, niin ei tarvitse muokata tuhatta tiedostoa, yhden tiedoston muokkaus riittää :P
Tarkastus koodi sitten on jotain tuon suuntaista, mitä tossa viestissäsi on. Tietenkin $_GET[] muuttuu joko $_SESSION[] tai $_COOKIE[], riippuen kumpaa sydeemiä käytät. Ja sitten, jos käyttäjätiedot eivät täsmää, niin ohjataan käyttäjä lomakesivulle, muuten annetaan tulostaa salainen sivu.
Tässä siis kirjautumisen perusrakenne, koodin vääntäminen jää sitten kotitehtäväksi :P Avainsanoja ovat header()-funktio sekä sessiot ja evästeet, joista Laaksonen on kirjoittanut hyvän oppaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.