Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: sijoitus ongelma

Jartsa [09.08.2004 21:07:02]

#

Eli tarkoitus olisi, että kun painan linkkiä niin siinä samalla muuttujaan asetettaisiin arvo alla olevalla tavalla. Tämän jälkeen switch case rakenteessa sitten haaraudutaan tämän muuttujan arvon perusteella. Tuo &action=NaytaLomakkeet ei kuitenkaan tunnu toimivan. Ilmeisesti tuon kuitenkin pitäisi toimia, koska sitä käytetään Ari Rantalan web ohjelmoinnin peruskirjassa melko usein. Niin käytän php 4.3 versiota, jos sillä nyt sattuu olemaan merkitystä tässä.

echo ("<a href=\"" . $PHP_SELF . "?tuoreustakuu=");
echo (time() . "&action=NaytaLomakkeet&input_lkm=1\">");
echo ("Tallenna uusia tiedostoja</a> | ");


switch ($action)
{
   case "NaytaLomakkeet":
      lomakkeet($PHP_SELF, $input_lkm);
      break;

   case "LisaaTiedostot":
      $file_lkm = 0;
      for ($i=1; $i <= $input_lkm; $i++)
      { // käydään kaikki syöttökentät läpi
         if (tallenna(${"filetto".$i},
                      ${"filetto".$i."_name"}, $datadir))
         {
            $file_lkm++;
         }
      }
      echo "Kopioitujen tiedostojen lukumäärä:";
      echo "<tt>$file_lkm</tt>";
      break;

   default:
      listaa_hakemisto($datadir, $urldir);
}

Antti Laaksonen [09.08.2004 21:38:22]

#

PHP:n uudemmissa versioissa sivun osoitteessa olevia muuttujia ei oletusasetusten ollessa valittuna pysty suoraan käsittelemään samannimisinä muuttujina, vaan niihin pitää viitata erillisen taulukon kautta. Tässä tapauksessa skriptin pitäisi toimia muuttamalla switch-rakenteen alussa oleva $action muotoon $_GET['action'] ja kaikissa kohdissa $input_lkm muotoon $_GET['input_lkm']. Sama juttu pitää tietenkin tehdä, jos lisäät skriptiin muita vastaavia muuttujia.

Lisää tietoa skriptille välitettyihin muuttujiin viittaamisesta uudella tavalla on PHP-oppaan 9. osassa toisena kysymyksenä.

PS. Kirjoita koodi ensi kerralla kooditagien sisään (ks. ohjeet).

Jartsa [10.08.2004 11:24:33]

#

Aha luulin, että tuo $_GET[''] on vain lomakkeiden tiedon tallennukseen. Onko se muuten suotavaa, että tekee esim. näin:

$input_lkm = $_GET['input_lkm'];

Tuostahan on ainakin se hyöty, että jos pitää kirjoittaa muuttuja monesti, niin ei tarvitse aina mennä "pitemmän" kautta. Kumoaako tuo sitten taulukon käytön idean? Monissa paikoissa mainitaan, että muuttujien suora käsittely on tietoturva riski, mutta itse en ainakaan ole huomannut missään selitettävän mitä kautta tämä riski muodostuu.

Heikki [10.08.2004 12:30:28]

#

Tuosta ongelmasta puhutaan tässä ketjussa.

Vastaus

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

Tietoa sivustosta