Autor Zpráva
Stalker
Profil
Hoj,

snazim se prijit na kloub odesilani formulare v php, pouze to tak testuji a hraju si, ale vubec se mi nedari.

Opsal jsem si z netu jednoduchy formular:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
 <head><!--  ščřžýŠČŘŽÝ -->
  <meta name="generator" content="PSPad editor, www.pspad.com" />
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  
  <title></title>
  
 </head>
 <body>
<form action="druhy.php">
Váš mail: <input name="mail_odesilatele"><br>
Předmět: <input name="predmet"><br>
Zpráva: <textarea name="zprava"></textarea><br>
<input type=submit value="Odeslat">
</form>
</form>      
 </body>
</html>

a k tomu opsal php skript s názvem druhy.php:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
 <head><!--  ščřžýŠČŘŽÝ -->
  <meta name="generator" content="PSPad editor, www.pspad.com" />
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  
  <title></title>
  
 </head>
 <body>
 <?php if ( Mail("marekcernak90@gmail.com", $predmet, $zprava, "From: " . $mail_odesilatele) )
echo "Mail byl odeslán";
else echo "Mail se nepodařilo odeslat"; ?>      
 </body>
</html>

ale pri odeslani pres server mi to napise tuto chybu:

Co ta chyba vlastně znamená? Mám chybu v kódu, nebo na domácím serveru?

Je to na mě moc pokročilé učivo, jen jsem si chtěl otestovat dva opsaný kódy z netu jeslti to funguje a nedá mi spát, že to nejede.
ALLSSA
Profil
Stalker:
Máš chybu na řádce 13. Konkrétně nemáš definované proměnnné mail_odesilatele, zprava a predmet - to jsou ty první tři zprávy. To vyřešíš tím, že přidáš do form method get/post a v souboru druhy.php to vytáhneš z předchozího souboru metodou $_GET['jmeno inputu']/$_POST['jmeno inputu']. Abych to vysvětlil, v souboru druhy.php neexistují ty tři proměnné. Ty jsou v jen v tom prvním.

Co se týče 4-té zprávy, tak se obávám, že selhal port 25 (zřejmě to nemáš nastavené v php.ini). Zkus hodit do googlu celou tu hlášku nebo počkej, až se ti ozve někdo, kdo s tím má zkušenosti.
panther
Profil
Stalker:
Mám chybu v kódu, nebo na domácím serveru?
nepodařilo se ti připojení k mailserveru, v kódu chyba (funkce mail) není.

Předtím máš nějaké nedefinované proměnné, ty budou v GET['name_formularoveho_pole']
panther
Profil
ALLSSA:
že přidáš do form method get/post
není nezbytné, method=get je defaultní.

v souboru druhy.php neexistují ty tři proměnné.
po odeslání formuláře existují. Vidíš to i na přiloženém screenu, že je máš v URL.
Stalker
Profil
ALLSSA, panther:
ALLSSA:
Děkuji za odpovědi, ale koukám, že to je pro mě víceméně španělská vesnice. Je asi zbytečný si zkoušet něco, co je na netu, když tomu nerozumím, ale děkuji za ochotu. Soustředím se na php od nejlehčích úkonů.
panther
Profil
Stalker:
Soustředím se na php od nejlehčích úkonů.
ano, to bude rozumné. Chápat pokročilejší věci (nastavení SMTP serveru) bez jakýchkoliv základních znalostí není jednoduché.

Když budeš u základů jazyka, definici proměnných (a eleminování těch třech varování) potkáš někde hned na začátku.
ALLSSA
Profil
panther:
Tak aspoň nové info: „není nezbytné, method=get je defaultní.

po odeslání formuláře existují. Vidíš to i na přiloženém screenu, že je máš v URL.
To sice jo, ale musíš je vytáhnout přes $_GET ne?

Stalker:
To rozhodně. Já osobně si s ním hraju rok a pořád se jen učím.
panther
Profil
ALLSSA:
ale musíš je vytáhnout přes $_GET ne?
záleží podle nastavení serveru, ale ano, je to tak.

Vlastně jsem to i psal, tedy aspoň to, že ty GET proměnné (resp. naplněné pole GET, nejsou to proměnné, ale pole) po odeslání formuláře existuje a bez odeslání formuláře bych se na tu stránku dostat neměl. Ošetřit by se to ještě dalo podmínkou, zda GET není prázdné, aby to ani teoreticky nemohlo noticky vypisovat.
ALLSSA
Profil
panther:
Takže vlastně tohle vlákno pomohlo mě. Děkuji.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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