Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP-aloitusongelma

Eero Harmaala [31.01.2003 09:20:07]

#

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ää?

knock [31.01.2003 11:29:50]

#

<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 :)

trinit [31.01.2003 12:34:31]

#

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#24

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

knock [31.01.2003 16:01:57]

#

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 :(

Eero Harmaala [31.01.2003 18:20:12]

#

Kiitoz

Vastaus

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

Tietoa sivustosta