Autor Zpráva
Dranel
Profil
Zdravím, mám následující kód pro zpracování dat z formuláře:

          <?php
          if(empty($_POST)) {
            $_POST["formular_predmet"] = "Zpráva z kontaktního formuláře Grandera";
          }
          else {
            if(empty($_POST["formular_jmeno"]) or empty($_POST["formular_prijmeni"])) {
              $chyba = 1;
              echo "<p><strong class='cervena'>Vyplňte prosím své jméno i&nbsp;příjmení, abychom věděli, jak Vás oslovit.</strong></p>";
            }
            if(empty($_POST["formular_email"])) {
              $chyba = 1;
              echo "<p><strong class='cervena'>Uveďte prosím svůj e-mail, abychom Vám mohli odpovědět.</strong></p>";
            }
            if(empty($_POST["formular_zprava"])) {
              $chyba = 1;
              echo "<p><strong class='cervena'>Před odesláním formuláře napište prosím text zprávy.</strong></p>";
            }
            
            if($chyba != 1) {
              $muj_email = "info@grandera.cz";
              
              if(!empty($_POST["formular_telefon"])) {
                $_POST['formular_zprava'] = "Jméno: {$_POST['formular_jmeno']} {$_POST['formular_prijmeni']}\nTelefon: {$_POST['formular_telefon']}\n\n{$_POST['formular_zprava']}";
              }
              else {
                $_POST['formular_zprava'] = "Jméno: {$_POST['formular_jmeno']} {$_POST['formular_prijmeni']}\n\n{$_POST['formular_zprava']}";
              }
              
              $odeslat = cs_mail($muj_email, $_POST['formular_predmet'], $_POST['formular_zprava'], "From: {$_POST['formular_jmeno']} {$_POST['formular_prijmeni']} <{$_POST['formular_email']}>\n");
              
              if($odeslat) {
                echo "<p><strong class='zelena'>E-mail byl úspěšně odeslán.</strong></p>";
              }
               else {
                echo "<p><strong class='cervena'>E-mail se bohužel nepodařilo odeslat.</strong></p>";
              }
            }
          }
          ?>


Na mém hostingu vše funguje tak, jak má, přesvědčte se sami: http://45-grandera.lenard.cz/kontaktujte-nas
Ovšem když jsme web nasadili na ostrou doménu, stalo se něco, co jsem ještě neviděl: http://www.grandera.cz/alfa/kontaktujte-nas

Může mi někdo vysvětlit, čím to? Zdá se mi to, jako by server nebral v potaz ukončení funkce echo, ovšem tomu se mi nechce věřit. Nasvědčuje tomu ovšem fakt, že úplně na začátku dokumentu mám script pro odesílání e-mailu - ten v sobě echo neobsahuje a nic z tohoto scriptu se na obrazovce nezobrazuje...
mckay
Profil
Dranel:
Server nezpracovává soubor jako php script, podívej se do zdrojáku.
joe
Profil
Nedochází ke zpracování PHP. Máte hosting s PHP? :)
Keeehi
Profil
mckay, joe:
K zpracování musí docházet, jinak by se ve zdroji zobrazil celý PHP kód. Na stránce se však zobrazuje jen část kódu.

Dranel:
V dodaném kódu nevidím chybu. Je možné, že se chyba vyskytuje někde dříve.
johnl
Profil
Dranel:
Zkus se zeptat přímo podpory webhostingu kde to máš.. Jinak já bych taky řekl že je to tím že na serveru není zaplé php, navíc Keeehi vždyť ve zdroji stránky je celý ten php kód ne.?
joe
Profil
Keeehi:
Ve zdrojovém kódu ale celé PHP je... nevykresluje ho prohlížeč, protože v něm zřejmě hledá HTML tagy.
BuGeR
Profil
zkus nad 6 řádek přidat
$chyba = 0;
Keeehi
Profil
johnl, joe:
Je tam jenom část. Kdyby se kód vůbec neinterpretoval, byla by ve zdrojovém kódu stránky vidět řádek 2 if(empty($_POST)) { před . Ten však ve zdrojovém kódu stránky vidět není -> část kódu interpretována byla, část ne.

Dranel:
Nemohlo by to třeba náhodou být tím, že jste použil short open tags? Hodil by se kompletní zdrojový kód.
DJ Miky
Profil
Keeehi:
if(empty($_POST)) { před . Ten však ve zdrojovém kódu stránky vidět není

Ten však ve zdrojovém kódu stránky vidět je, konkrétně řádek 77. A v kódu má <?php, takže short_open_tags to nebude.
Dranel
Profil
Keeehi:
Chyba se dříve vyskytovat nemůže, to, co je ve zdrojáku je opravdu celý kód (část kódu úplně nahoře nad DOCTYPE, část kódu nad formulářem a hodnoty formulářových polí v nich).

BuGeR:
Vyzkouším, ovšem nemyslím si, že by to mělo na problém vliv. Spíše bych to opravdu tipoval na vyplé PHP. Poradím se s poskytovatelem hostingu.
Davex
Profil
Dranel:
Vypadá to na špatně nakonfigurovaný akcelerátor/reverse proxy/loadbalancer nebo hosting bez podpory PHP - stále se vrací statická stránka z Thu, 26 Aug 2010 08:46:57 GMT bez interpretovaného PHP. Myslím, že kdyby adresa končila na .php, tak by se to dít nemělo.
Dranel
Profil
Davex:
V .htaccess se akorát podstrukuje: http://www.grandera.cz/alfa/kontaktujte-nas.php
Keeehi
Profil
Všem se omlouvám, ale já jsem doopravdy celý PHP kód neviděl.

Ve zdrojovém kódu se mi na řádku 53 začíná zobrazovat část PHP kódu. Tato část začíná 8.řádkem zde nakopírovaného a je z něj vynecháno echo "<p><strong class='cervena'> takže 53.řádek vypadá takto: Vyplňte prosím své jméno i&nbsp;př…

Jak jsem právě zjistil toto způsobil google chrom. Když jsem se na zdroják podíval v opeře, tak byl neinterpretovaný celý.
AM_
Profil
Na serveru téměř jednoznačně není podpora PHP.

Davex:
Myslím, že kdyby adresa končila na .php, tak by se to dít nemělo.
záleží na tom, jak je pojmenovaný soubor, nikoli co je v URI. PHP přeci normálně funguje i přes mod_rewrite. Předpokládám, že to běží na Apache. nebo ne?

Vypadá to na špatně nakonfigurovaný akcelerátor/reverse proxy/loadbalancer
neřekl bych, to by sice mohlo způsobit, že by se načítala stále stejná stránka, ale PHP by se zpracovalo už při prvním načtení a nedostalo by se takto "holé" do cache vůbec.
mckay
Profil
Keeehi:
Nevím jak ty, ale já tam ten zdroják vidím celý.

//Aha, sorry, nečtu do konce, už jsi to řekl.
djlj
Profil
AM:
Předpokládám, že to běží na Apache. nebo ne?
nginx, mrkni na hlavičky.
Davex
Profil
AM:
Vycházel jsem z toho, že je tam nginx, který se často používá jako reverse proxy a pro statické soubory si může sáhnout přímo, přičemž obejde Apache. Ten skript kontaktujte-nas.php se také neinterpretuje, takže na serveru není zapnuté PHP.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0