Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Muuttujan kasvattaminen yhdellä

Sivun loppuun

ottis [08.03.2003 11:19:11]

#

Voisiko joku laittaa vähän koodia? Tarvitsen sellaisen systeemin että sivulla on nappula, kun sitä painaa niin jossain tiedostossa muuttuja kasvaa yhdellä. Olen ihan newb. enkä ole löytänyt tuollaista vielä mistään.

Tumpi [08.03.2003 11:31:03]

#

Ja kieli oli...?

Tumpi [08.03.2003 11:40:53]

#

No luultavasti PHP:stä puhutaan...

Elikkäs nappula.html:

<form action="kasvata.php" method="post">
<input type="submit" value="Paina!">
</form>

Ja kasvata.php:

<?php
  $file = "tiedosto.txt";
  $data = file($file);

  $maara = $data[0] + 1;
  $data[0] = $maara;

  $fo = fopen($file, "w");
  foreach ($data as $row)
  {
    fputs($fo, $row);
  }
  fclose($fo);
?>
<a href="nappula.html">Takas</a>

Ja sitten on tiedosto.txt jonka ekalla rivillä on aluksi nolla ja se kasvaa... tällänen vai? Toi oli hatusta vedetty sitten...

ottis [08.03.2003 11:44:20]

#

Sori, ihan unohtu mainita PHP. :D Mutta onneksi osasit lukea ajatuksiani. Kiitos

Tumpi [08.03.2003 11:47:16]

#

No testaas toimiiko toi, ja oliko semmonen mitä tarttet.

ottis [08.03.2003 11:54:19]

#

Kiitos vielä kerran. Mitenkä tohon saisi sellaisen että sama käyttäjä ei voi kasvattaa arvoa kuin kerran?

Tumpi [08.03.2003 12:02:15]

#

Elikkäs... tässä olisi yksi tapa, ei mikään loistavin tosin... tarviit hakemiston ip/.

nappula.php:

<?php
  if (!file_exists("ip/". $REMOTE_ADDR .".txt")) {
?>
<form action="kasvata.php" method="post">
<input type="submit" value="Paina!">
</form>
<?php
  }
  else {
?>
Eipäs oo mitään nappeja!
<?php
  }
?>

kasvata.php:

<?php
  if (!file_exists("ip/". $REMOTE_ADDR .".txt")) {
    $file = "tiedosto.txt";
    $data = file($file);

    $maara = $data[0] + 1;
    $data[0] = $maara;

    $fo = fopen($file, "w");
    foreach ($data as $row)
    {
      fputs($fo, $row);
    }
    fclose($fo);

    $fo = fopen("ip/". $REMOTE_ADDR .".txt", "w");
    fwrite($fo, $REMOTE_ADDR);
    fclose($fo);
  }
?>
<a href="nappula.php">Takas</a>

En oo varmaa toimiiko, testaa :D
Ja toi kansio tarvii oikeuksia sitten, muuten tulee erroria.

edit: vähän kirjotusvirheitä
edit: vieläkin :)

ottis [08.03.2003 13:01:12]

#

Kyllä se toimii :) Kiitos ;)
Tuota hieman modaamalla saan kuva galleriaani sellasen äänestys jutun että voi antaa kuvalle ääniä 1 - 5.

ottis [09.03.2003 00:36:47]

#

Millälailla tuosta saa sellaisen että jos ip kansiota ei ole niin se luodaan? Pitäisi olla helppoa?

Teme [09.03.2003 11:00:12]

#

<?php
if (!file_exists("ip/")) { mkdir("ip", 0700); }
?>

Kokeilin tota skriptiä omalla koneellani ja se toimi moitteettomasti... Sitten vaan lisäät ton yhden rivin sen muun skriptin alkuun, muista katsoa, että se sijoittuu <?php ja ?> tagien sisälle, muuten ei toimi.

Teme [09.03.2003 11:07:51]

#

Ja muuten, toi IP-osoite kannattaisi lukea getenv() -ympäristömuuttujasta. Siksi, että sillä saa aina mahdollisimman uuden datan. Vaikka näin:

$ip = getenv("REMOTE_ADDR");

Kannattaisiko käyttää keksejä (cookie)? Voisi olla vähän parempi, ettei jokaisesta käyttäjästä tehdä omaa tiedostoa, sillä hetken päästä niitä on muutama sata. Mieluummin yksi tiedosto, johon lisätään se IP tai sitten asetetaan keksi käyttäjälle.

ottis [09.03.2003 11:37:44]

#

Kiitos. Miten tuo ip kansion loppuosa määritetään muuttujasta? koitin jo:

$muuttuja = "moi"
(!file_exists("ip$muuttuja/".....

Mutta erroria lykkää.

LL [09.03.2003 12:04:45]

#

$muuttuja = "Moi";
if (file_exists("ip". $muuttuja . "") {}

Tuo toimii jos tarkoitit tuota...

(en ole sitten testannut)

Antti Laaksonen [09.03.2003 12:06:21]

#

Haluatko siis saada hakemiston nimeksi "ipmoi"? Kyllä tuon "ip$muuttuja/" pitäisi toimia. Voit myös kokeilla erottaa muuttujan aaltosuluilla: "ip{$muuttuja}/". Jos taas tiedoston nimi on $muuttuja, laita /-merkki heti ip:n jälkeen.

Tumpi [09.03.2003 12:33:33]

#

Itse en suosi keksejä, kun ne voi poistaa, eikä toimi esim. koulumme koneilla. Sessioneita mieluummin, mutta toi on helpoin varmaankin.

ottis [09.03.2003 13:23:47]

#

No nyt, kiitos


Sivun alkuun

Vastaus

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

Tietoa sivustosta