Kirjoittaja Aihe: [ ratkaistu] html-kaavake ja kenttien tallennus php:llä tiedostoon  (Luettu 2714 kertaa)

teele

  • Käyttäjä
  • Viestejä: 815
    • Profiili
Kokeilin palvelimella olevalla  html-sivulle kaavakkeeseen tulevien arvojen tallentamista php:llä omaan tiedostoonsa.

index.php-sivu on tällainen

Koodia: [Valitse]
<html>
<body>

<form action="tallenna.php" method="POST">
    <input name="field1" type="text" />
    <input name="field2" type="text" />
    <input type="submit" name="submit" value="Save Data">
</form>

</body>
</html>



ja tallenna.php -sivu tällainen

Koodia: [Valitse]
<?php
if(isset($_POST['field1']) && isset($_POST['field2'])) {
    
$data $_POST['field1'] . '-' $_POST['field2'] . "\r\n";
    
$ret = = file_put_contents('/tmp/mydata.txt'$dataFILE_APPEND LOCK_EX);
    if(
$ret === false) {
        die(
'There was an error writing this file');
    }
    else {
        echo 
"$ret bytes written to file";
    }
}
else {
   die(
'no post data to process');
}


Mutta /tmp -hakemistoon ei näytä ilmaantuvan mitään tiedostoa lisää. Miten saisi tallenenttavan tiedoston sellaiseen paikkaan, johon se oikeasti haluttaisiin.

Tallennus ei myöskään onnistu siihen hakemistoon, jossa php -tiedostot ovat. Tällöin  syynä ovat luultavasti väärät oikeudet.

Jos antaa kirjoitusoikeudet www-datalle, riittäisikö se tai miten pitäisi oikeuksia muokata, että php -tuloste voitaisiin kirjoittaa tavalliseksi tiedostoksi. (Onko tässä pahopja tietoturvariskejä)

« Viimeksi muokattu: 15.08.19 - klo:21.48 kirjoittanut teele »

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: html-kaavake ja kenttien tallennus php:llä tiedostoon
« Vastaus #1 : 14.08.19 - klo:19.31 »
Mites jos kokeilisit lomaketta, mielestäni kaavake ei ole moiseen passeli ratkaisu.

Toki vain mielipide mutta aktiiviaikoinani sallin vain lomakkeet jos tarkoitus täyttää selaimessa.


teele

  • Käyttäjä
  • Viestejä: 815
    • Profiili
Vs: html-kaavake ja kenttien tallennus php:llä tiedostoon
« Vastaus #2 : 14.08.19 - klo:21.18 »

Taisin tehdä käännösvirheen, englannin kielinen sana form pitääkin kääntää lomakkeeksi. Mutta käännösvirheestä riippumatta php -teksteissä on kuitenkin käytetty sanaa form eikä kielioppivirheistä tule valituksia ja koodi näyttää toimivan.

Ongelmana on se, että mydata.txt -tiedostoa ei näytä löytyvän. Jos tallennuspaikaksi vaihtaa php- tekstin sijaintipaikan, tulee ilmoitus, että kirjoitus ei onnistunut, mikä onkin ihan oikein, jos oikeudet eivät ole kunnossa.

Palvelimella on käyttkisenä Ubuntu 18.04.

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: html-kaavake ja kenttien tallennus php:llä tiedostoon
« Vastaus #3 : 14.08.19 - klo:22.01 »
Selvittelyä auttaa jonkin verran jos lisäät testin ajaksi php-palikan alkuun:
Koodia: [Valitse]
<?php
ini_set
('display_errors'1);
ini_set('display_startup_errors'1);
error_reporting(E_ALL);


Joskus pähkäilin vastaavien juttujen parissa mutta en oikopäätä muista miten sen piti olla ...

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: html-kaavake ja kenttien tallennus php:llä tiedostoon
« Vastaus #4 : 14.08.19 - klo:22.51 »
....
Tallennus ei myöskään onnistu siihen hakemistoon, jossa php -tiedostot ovat. Tällöin  syynä ovat luultavasti väärät oikeudet.

Jos antaa kirjoitusoikeudet www-datalle, riittäisikö se tai miten pitäisi oikeuksia muokata, että php -tuloste voitaisiin kirjoittaa tavalliseksi tiedostoksi. (Onko tässä pahopja tietoturvariskejä)

Alkuun päässet ihan antamalla oikeudet
Koodia: [Valitse]
sudo chown www-data mydata.txt

Toki tiedoston tulee olla hakemistossa jonka apassi näkee, tuosta '/tmp/' en ole varma, enkä ole kokeillut ...

teele

  • Käyttäjä
  • Viestejä: 815
    • Profiili
Vs: html-kaavake ja kenttien tallennus php:llä tiedostoon
« Vastaus #5 : 15.08.19 - klo:21.47 »

Toimii, tein nanolla mydata.txt -tiedoston /var/www/html -hakemistoon ja Jekun ohjeiden mukaan vaihdoin omistajaksi www-datan.

Kiitos neuvoista :)