Autor Zpráva
Tomy
Profil
Ahoj, mám takový problém. Mám vytvořenou stránku kde se mají posílat emaily, ale ono mi to nějak nefunguje. Poradíte mi rosím, kde mám chybu?

Přikládám kód. Děkuju moc :)

<?php

$to = "xolycz@gmail.com";
$subject = "this came from your mother";

$name = $_POST["name"];
$email = $_POST["email"];
$topic = $_POST["topic"];
$message = $_POST["message"];

$body = <<<EMAIL

Hi! My name is $name. and my topic is $topic

$message

From $name
Oh ya, my email is $email

EMAIL;

$header = "From: $email";

if($_POST){
    if($name == "" || $email = ""|| $message = ""){
            $feedback = "fill out all the fields";
    }
    else{
    
    }
    mail($to, $subject, $body, $header)
    $feedback = "Thanks for the worthless email";
}
mail($to, $subject, $message, $header)

?>

<!DOCTYPE html>
<html>
  <head>
  <link rel="stylesheet" type="text/css" href="main.css">
    <style type="text/css">
        form {
            width: 400px;
        }
        
        form ul {
            list-style-type: none;
        }
        
        form ul li{
            margin: 15px 0;
        }
        
        form labels {
            display: block;
            font-size: 2em;
        }
        
        form input, textarea, select{
            font-size: 2em;
            padding: 5px;
            border: #ccc 3px solid;
            width: 100%;
        }
    </style>
  </head>
  <body>
  <p id="feedback"><?php echo $feedback; ?></p>
                    <form action="?" method="post">
                        <ul>
                            <li>
                                <label for="name">Name:</label>
                                <input type="text" name="name" id="name" />
                            </li>
                                <li>
                                <label for="name">Email:</label>
                                <input type="text" name="email" id="email" />
                            </li>
                            <li>
                                <label for="topic">Topic:</label>
                                <select id="topic">
                                    <option value="Ponies">Ponies</option>
                                    <option value="Mexicans">Mexicans</option>
                                    <option value="Weiner">Weiner</option>
                                </select>
                            </li>
                            <li>
                                <label for="message">tell me about your shitty day:</label>
                                <textarea id="message" name="message" cols="42" rows="9"></textarea>
                            </li>
                            <li><input type="submit" value="Submit" ></li>
                        </ul>
                    </form>
                </body>
            </html>
mimochodec
Profil
Co znamená "nefunguje"? Co to dělá? Hodnoty v tom POSTu jsou?
Proč máš to mail mimo ten if? A proč ho máš pod tím ještě jednou?

    if($name == "" || $email = ""|| $message = ""){
            $feedback = "fill out all the fields";
    }
    else{
    
    }
    mail($to, $subject, $body, $header)
Tomy
Profil
No neposílá to ty emaily, ani to nevypisuje to že si máš všecko vyplnit, nebo to že děkuje za zprávu.

Jo toho že to tam mám dvakrát sem si nevšiml, nevim proč, nějak sem to přehlédl.
mimochodec
Profil
Já mám občas pocit, že na 80 % dotazů tady se dá odpovědět: nejdřív se dopátrej místa, kde se to chová jinak, než očekáváš.
- jednak nepoužívám ten zápis, kterým tady skládáš proměnnou $body. Takže si pod to dej echo $body a uvidíš, jestli v tom je to, co by sis představoval.
- pod tím je if($_POST){ - když si dovnitř do toho ifu dáš jako první řádek echo "ok";, tak uvidíš, jestli je ta podmínka splněna. Pokud ano, jdeš stejným způsobem dál. Pokud ne, zjistíš, proč splněna není.
Tomy
Profil
Dobře, zkusím.


Myslím, že to nedělá vůbec nic:D
mimochodec
Profil
Má ten soubor příponu .php? A je na serveru, kde má php běžet? Dej tam jako první řádek pod <?php toto: echo "1";
Tomy
Profil
Soubor příponu .php má, na serveru to je povolené, ale tohle mám já osobně v počítači. Zkoušel sem tam dát to echo a ono to prostě nic nedělá. já nevím proč, co tomu je :O :(
juriad
Profil
Jiné skripty ti u tebe na počítači fungují? Jak ten soubor zobrazuješ? Pomocí http://localhost/název-souboru.php nebo file://C:/Users/.../názve-souboru.php?
Tomy
Profil
File: ...


nevím co přesně těma scriptama myslíš. Nebo spíše jak to zjistím? Myslíš něco s doplňkama prohlížeče? jinak používám poslední verzi Firefoxu.
juriad
Profil
Tak to nikdy nemůže fungovat. Musíš si u sebe nainstalovat webový server, stránky umístit do něj a přistupovat k nim přes http://localhost/.

Pokud tedy chceš používat PHP, už nikdy nebude možné na soubor na disku jen poklepat a zobrazit jej tak v prohížeči. Ten soubor musí být napřed zpracován webovým serverem (a PHP, které je v něm obsažené). Toto se ve skutečnosti děje na hostinzích, a toho také musíš dosáhnout u sebe na počítači.
Tomy
Profil
juriad:
Jdu na to.


Ty stránky mámo zkopírovat do složky toho programu a pustit to tam, nebo jak si to myslel?
mimochodec
Profil
Tomy:
Alternativou k instalaci serveru u sebe (což není úplně banální) je zřízení účtu na nějakém free hostingu. Jestli jsi trvale na internetu, nevidím v tom problém, výhodou navíc je, že to v tom rozpracovaném stavu můžeš někomu předvést, ať už tam budeš řešit nějaký problém, nebo pak před nasazením do ostrého provozu budeš chtít třeba okomentovat design. Ostrým provozem myslím nějaký placený hosting, který bych rozhodně doporučoval, pokud je to něco, kde čekáš víc než 30 návštěv denně.
Tomy
Profil
mimochodec:
To bych zkusit mohl no. Placený hosting už mám, nebo ho má spíše ten pro koho ty stránky dělám, ale nechci to tam dávat neůplné.

Jinak máš nějaké doporučení na free hosting?
mimochodec
Profil
Tomy:
Na tom placeném to můžeš dát do nějaké neveřejné složky, třeba domena.cz/new nebo domena.cz/dkfug. Bude to možná ještě lepší než nějaká endora.cz, a to z důvodů výkonu a spolehlivosti, ale hlavně proto, že tam pak máš jistotu stejného nastavení php a nemusíš kopírovat databázi.
Tomy
Profil
mimochodec:

No mám to tam, mám to otevřené


Ale teď mám problém s tím, že on když otevře tu záložku s tím emailem "kontakt.php" tak je ta stránka prázdná a když tam dám .html tak to načte, ale zase mi to nefunguje.
Tomy
Profil
Nevíš proč mi to nejde otevřít? Nebo spíše proč mi to jakoby nepřečte to co je v tom souboru?
Marschmallow
Profil
Tomy:
Napiš nám adresu, kterou zadáváš do prohlížeče (nebo ji tam máš), aby se ti zobrazil soubor kontakt.php (příp. kontakt.html).
Tomy
Profil
sdhbecva.cz/web/kontakt.php

sdhbecva.cz/web/kontakt.html
juriad
Profil
PHP stránka hlásí chybu: HTTP/1.1 500 Internal Server Error, proto nefunguje. Jsou v ní nějaké chyby (v PHP). Na první pohled jsou to chybějící středníky na koncích řádků 31 a 34 (v [#1]).
Marschmallow
Profil
Tomy:
A oba soubory (tj. kontakt.html a kontakt.php mají stejný obsah)? Je v těch souborech nějaký úsek PHP ([#1])?
Teď je ještě otázka, zda webhosting, na kterém ti běží Tvé stránky podporuje PHP. Zkus vytvořit nějaký soubor (třeba pokus.php) a vložit do něj:
<?php
echo "Ahoj!";
?>
a nahrát ho na webhosting. Pak ho otevřít (sdhbecva.cz/web/pokus.php - podle toho, kam sis ten soubor uložil) a zkontrolovat, zda se vypsal text Ahoj!. Pokud ano, server podporuje PHP, pokud bude stránka bílá, PHP nepodporuje. Případným vysvětlením by bylo, pokud bys měl v PHP v souboru kontakt.php chybu.
Tomy
Profil
Webhosing to podporuje.


A vypadá že to bylo tím středníkem :)


Ještě prosím vás. Jaký příkaz nebo něco mám požít aby mi to bralo i čárky a háčky? Když ten email pošlu tak to příjde bez háčků a čárek.
Fisir
Profil
Reaguji na Tomyho:
Podívej se na zdejší FAQ.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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