Aloitin PHP:llä ohjelmoimisen, joten asensin Apachen palvelinohjelmiston ja PHP:n moduuliasennuksen, jotta voin testata koodinpätkiä omalta koneelta. Noudatin ohjelmointiputkan ohjeita tarkkaan, mutta on tullut välillä ongelmia. Monet koodinpätkät ovat toimineet, mutta esim. Mikrobitin 6-7/2002 Php-aloitusoppaan yksi koodinpätkä ei toiminut. Se oli salasanantarkistusohjelma, mutta vikana siinä on se, että tiedot eivät siirry php-osion muuttujiin.
Tässä on lomakkeen koodi:
<html> <body> <form action="tunnista.php" method="post"> Nimi: <input name="kayttaja"><br> Salasana: <input name="salasana" type="password"><br> <input type="submit" value=" Lähetä "> </form> </body> </html>
Ja tässä arvojen käsittelijän(tunnista.php):
<html> <body> <?php if ($kayttaja == 'sulo' && $salasana == 'salmiakki') { print 'Tervetuloa kotiin, Sulo!'; } else { print 'Käyttäjää ' . $kayttaja . ' ei tunnistettu tai salasana on väärä.'; } ?> </body> </html>
Ongelmana on siis se, että $kayttaja ei saa lomakkeen arvoa "kayttaja" ja $salasana ei saa lomakkeen arvoa "salasana". Sitä voi kokeilla vaikka lisäämällä arvojen käsittelijätiedostoon rivin:
print 'Käyttäjä: ' . $kayttaja . ' Salasana: ' . $salasana;
Omalla koneellani vastaava tulostaa tekstin "Käyttäjä: Salasana: ". Onko siis vika koneeni ohjelmien asetuksissa vai edellisessä koodissa? Pitääkö asentaa vielä jotain lisää?
<html> <body> <?php if ($_POST["kayttaja"] == 'sulo' && $_POST["salasana"] == 'salmiakki') { print 'Tervetuloa kotiin, Sulo!'; } else { print 'Käyttäjää ' . $_GET["kayttaja"] . ' ei tunnistettu tai salasana on väärä.'; } ?> </body> </html>
noin... vois alkaa toimiin :)
lainaus:
...mutta vikana siinä on se, että tiedot eivät siirry php-osion muuttujiin.
Käytät siis PHP-tulkin versiota 4.2.0 tai uudempaa? Näissä tulkeissa register_globals asetus on oletuksena off tilassa jolloin muuttujien arvot pitää lukea superglobaalitaulukoista.
En nyt ala sitä paremmin selostamaan kun olen sen jo PHP-alueen FAQ-sivulle kerran kirjoittanut ;) https://www.ohjelmointiputka.net/faq.php?sivu=3
edit: Piti vielä kertoa, että knock:n esimerkissä else-lausekkeen $_GET['kayttaja'] pitäisi olla $_POST['kayttaja'] koska lomakkeen tiedot oli lähetetty POST-metodilla
lainaus:
edit: Piti vielä kertoa, että knock:n esimerkissä else-lausekkeen $_GET['kayttaja'] pitäisi olla $_POST['kayttaja'] koska lomakkeen tiedot oli lähetetty POST-metodilla
juu... oli kiire niin tuli moka ja enään en pääse editoimaan tota :(
Kiitoz
Aihe on jo aika vanha, joten et voi enää vastata siihen.