Autor Zpráva
zdestr
Profil
ahoj,
pro účely maleho bazárku potřebuji vytvořit stránku s jednoduchým formulářem, který návštěvník stránky vyplní, připojí soubor (obrázek) a odešle. Jeho nabídka ze zařadí k ostaním tak, aby všichni tyto nabídky viděli.
Na webu jsem našel tento kód v PHP:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title>Komentáře</title>
  </head>
  <body>
  <?php 
    $delimeter=" ∎ "; // delimeter můžeš ponechat 
    $cesta_souboru="koment.txt"; // cesta k souboru TXT, do kterého se budou daný komentáře ukládat
    $umisteni_scriptu=""; //umístění tohoto souboru
    if(!file_exists($cesta_souboru)){ // pokud neexistuje soubor do kterého se má zapisovat, tak ho vytvoří
      file_put_contents($cesta_souboru,"");
    }
    if(isset($_POST['komentar'])){  //pokud kliknou na odeslat tak se to začne zpracovávat
      if(!in_array("",array($_POST['jmeno'],$_POST['email'],$_POST['text']))){   //zkontroluje, zda vyplnili všechny položky 
        $soubor=file_get_contents($cesta_souboru);  // načtu si soubor s předchozíma komentářema 
        $zapis=$soubor." ⦿ ".$_POST['jmeno'].$delimeter.$_POST['email'].$delimeter.$_POST['text']; //přidám starý text + si dám delimetr mezi jednotlivé nové stringy
        file_put_contents($cesta_souboru, $zapis); //přepíšu soubor 
      } else {
        echo "<b>Nemáte zadané všechny hodnoty.</b><br>"; // pokud nejsou zadané všechny hodnoty, vypíše to tuto hlášku
      }    
    }
    $komentare=file_get_contents($cesta_souboru); // načtení souboru do proměnné
    $rozdeleni_radky=explode(" ⦿ ",$komentare); // rozdělení dle řádků => na jednotlivé příspěvky
    if(count($rozdeleni_radky)!=0){ // pokud je v něm víc jak jeden komentář
      for($i=0;$i<count($rozdeleni_radky);$i++){ // cyklus, pro všechny komentáře
        if($rozdeleni_radky[$i]!=""){
          $roztrzeni=explode($delimeter,$rozdeleni_radky[$i]); // roztržení dle delimetru
          $koment=array("jmeno" => $roztrzeni[0] , "email" => $roztrzeni[1], "text" => $roztrzeni[2]); // pro hezčí vypisování přidáno do array 
          echo "<b>Jmeno:</b> ".$koment['jmeno']."<br>";     // jednoduché vypsání 
          echo "<b>Email:</b> ".$koment['email']."<br>";
          echo "<b>Text:</b> ".$koment['text']."<br>";
          echo "<hr><br>";
        } 
      }
    } else {
      echo "Nebyl zatím zadán žádný komentář<br>"; // vypsání hlášky, že zatím nebyl zadán žádný komentář
    }                                       
  ?>  
    
    <form method="POST">
      Jmeno:<input type="text" name="jmeno"><br>
      Email:<input type="email" name="email"><br>
      Text:<textarea name="text"></textarea><br>
      <input type="submit" value="Odeslat" name="komentar">   
    </form>
  </body>
</html>

který funguje takto: http://zdestr.cz/pokus/index1.php

Takto by mi to i stačilo, ale potřebuji ještě přidat tlačíto na přiložení souboru (obrázku) a tento se uložil v nějakém adresáři a zobrazil u příslušného příspěvku. Popřípadě by ještě nebylo špatné tlačítko "Odpovědět", pomocí kterého by zájemce odeslal e-mail na adresu zadanou v příslušném příspěvku.

Programovat ani PHP neumím, tudíž nevím jak na to a zda to vůbec jde.

Poradí mi, prosím, někdo s řešením a dopíše příslušnou část kódu?

děkuji
scheras
Profil *
1. Přidání tlačítka na upload souboru
<form method="POST" enctype="multipart/form-data">
      Jmeno:<input type="text" name="jmeno"><br>
      Email:<input type="email" name="email"><br>
      Obrazek:<input type="file" name="soubor" accept="image/*">
      Text:<textarea name="text"></textarea><br>
      <input type="submit" value="Odeslat" name="komentar">   
    </form>
2.Zpracování a uložení obrázku
Například Zde

3.Zobrazení obrázku
Podobně jako ve vašem kódu
echo "<img src='"$cestakobrazku"' alt='foto'>;

4.V uvedeném příkladu není ani za mák řešená bezpečnost!
zdestr
Profil
scheras:

děkuji moc za radu, zkusím se s tím nějak poprat :-)

.... co se týka bodu č. 4: jakousi obecnou představu o bezpečnosti mám, ale v tomto případě opravdu vůbec netuším, co může být ohroženo, s jakými následky by se to projevilo, co to může způsobit ...... a hlavně nevím, jak to případně vyřešit a zabezpečit .... jak jsem již poznamenal, nejsem programátor a této oblasti nerozumím :-(

... no uvídíme, snad tím nerozpoutám 3. světovou válku :-D

ještě jednou díky
scheras
Profil *
zdestr:
v tomto případě může dojít k tzv. XSS (viz stránka s příkladem) nebo například k nahrání vlastního php scriptu do vašeho souboru. Je tedy potřeba ošetřit vkládané znaky.
zdestr
Profil
scheras:

díky, pídil jsem se, co pro to mohu udělat ... a už jsem tuto stránku taky objevil,

již jsem ošetření do pokusné stránky zakomponoval .... zdá se, že to funguje :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: