IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
relycanx
Člen
Avatar
relycanx:12.10.2013 11:09

Už v minulosti jsem jentak ze zvědavosti zkoušel přes php poslat mail, nepodařilo se. Teď jsem zkoušel další dva vzorové kódy, ale zase nic. V čem je prosím chyba? tento script je nefunkční, na můj mail nic nepřijde.

<?php
$prijemce = "[email protected]";
$predmet = "Předmět";
$text = "text zprávy";
$odesilatel = "[email protected]";
if (@mail($prijemce, $odesilatel, $predmet, $text)){
echo ("E-mail byl odeslán..");
}
else {
echo ("Nepodařilo se e-mail odeslat, ověřte zda jste připojeni k síti..");
}
?>
Editováno 12.10.2013 11:11
 
Odpovědět
12.10.2013 11:09
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na relycanx
David Hartinger:12.10.2013 11:38

Kdybys zkusil vzorové kódy z devbooku, tak ti to bude fungovat. http://www.itnetwork.cz/…ovy-formular

Nahoru Odpovědět
12.10.2013 11:38
New kid back on the block with a R.I.P
Avatar
Odpovídá na relycanx
Neaktivní uživatel:12.10.2013 13:38

Proč je před tím <strong>mail</stron­g> ten zavináč ?

Nahoru Odpovědět
12.10.2013 13:38
Neaktivní uživatelský účet
Avatar
Odpovídá na relycanx
Neaktivní uživatel:12.10.2013 13:40

No ono to je celý blbě, funkce mail je takto:

mail($pro,$predmet,$text,$parametry);

takže by to bylo nějak takto:

if(mail($prijemce, $predmet, $text,'From: ' . $odesilatel)){
echo ("E-mail byl odeslán..");}
Editováno 12.10.2013 13:42
Nahoru Odpovědět
12.10.2013 13:40
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:12.10.2013 13:43

Zavináč potlačuje errory, což je největší hloupost, co může programátor udělat. Funkce mail je také zastaralá, neumí UTFko.

Nahoru Odpovědět
12.10.2013 13:43
New kid back on the block with a R.I.P
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na relycanx
Petr Nymsa:12.10.2013 13:49

Je to špatně, a navíc máš tam docela perličku :D

Nepodařilo se e-mail odeslat, ověřte zda jste připojeni k síti..

To nezní jako nejlepší věta jak říct uživateli že vyplnil něco špatně :D. Jak by mu server mohl odpovědět, když není připojen ? :`

Editováno 12.10.2013 13:49
Nahoru Odpovědět
12.10.2013 13:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.10.2013 13:52

Zavináč jen potlačuje výpis errorů do výstupu, ale chybové hlášení je stále možné zachytit a zpracovat. Používání zavináče tedy není hloupost, ale nutnost, pokud potřebuji chybu zpracovat jinak než systémově. Hloupost je to pouze tehdy, když po zavináči ty chyby nezpracuji.

Funkce mail() nepotřebuje zpracovat UTF, pokud zprávu převedu do sedmibitového kódování.

Nahoru Odpovědět
12.10.2013 13:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.10.2013 14:17

Můžeš uvést reálný příklad, kdy používáš zavináč?

Nahoru Odpovědět
12.10.2013 14:17
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.10.2013 14:24

Například když parsuji nevalidní HTML nebo XML, když potřebuji zachytit a ošetřit require, když pracuji se soubory a funkce, které s nimi pracují, by jinak způsobily zhroucení skriptu,...

Nahoru Odpovědět
12.10.2013 14:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.10.2013 14:26

Myslel jsem, že uvedeš něco konkrétního. Nevím, co děláš se zavináčem u require, zaprvé ti to pohltí chyby ve skriptu, který načítáš a zadruhé máme include.

Nahoru Odpovědět
12.10.2013 14:26
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.10.2013 14:34
<?php
$a = array();
$b = @$a['xx'];
echo ">$b<";
$db = @new PDO('pgsql:dbname=pokus', NULL, NULL, $dbAttr);
$doc = new DOMDocument();
@$doc->load('http://www.itnetwork.cz/rss_generator_all.php');
Nahoru Odpovědět
12.10.2013 14:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.10.2013 14:51

Ten kód mi přijde nepřehledný a hlavně jde napsat bez zavináčů. Raději použiji isset nebo file_exists (který se cachuje) než tohle. Začátečníci by o tom neměli vůbec vědět.

Nahoru Odpovědět
12.10.2013 14:51
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.10.2013 14:54

Proto jsem to sem nechtěl dávat. Máš, co jsi chtěl.

file_exist() problém nijak neřeší.

Nahoru Odpovědět
12.10.2013 14:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.10.2013 14:59

Existuje pár funkcí, kde potřeba jsou. Ale je jich velmi málo a je třeba je brát jako bypass, ne jako nějakou techniku a používat je ke čtení z neinicializovaných proměnných, jako jsi zde předvedl. Nebo dokonce u require, to jen dokazuje, jak si to člověk potom neuhlídá a nedomyslí, co to vlastně dělá.

Nahoru Odpovědět
12.10.2013 14:59
New kid back on the block with a R.I.P
Avatar
relycanx
Člen
Avatar
Odpovídá na David Hartinger
relycanx:12.10.2013 15:00

no asi takhle - dřív mi nešlo na rozum, proč se pořád ten pitomý mail nechce odeslat, tak jsem na netu hledal takovéhle zřejmě nesmyslné a zastaralé scripty, ale já hlavně nevěděl, že z xamppu nejde maily bez úpravy konfiguračního souboru vůbec odesílat, takže teď jsem to otestoval na svém webu, jak funguje ten skript z tvého článku a super, vše konečně šlape jak má :)

 
Nahoru Odpovědět
12.10.2013 15:00
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.10.2013 15:03

Tak se předveď, jak bys řešil ekvivalent k tomuto:

$doc = new DOMDocument();
@$doc->load('http://www.itnetwork.cz/rss_generator_all.php');

Tady ti file_exist() nepomůže.

Nahoru Odpovědět
12.10.2013 15:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.10.2013 17:06

Tak znovu, asi jsi to nečetl: "Existuje pár funkcí, kde potřeba jsou. Ale je jich velmi málo a je třeba je brát jako bypass, ne jako nějakou techniku a používat je ke čtení z neinicializovaných proměnných, jako jsi zde předvedl. Nebo dokonce u require, to jen dokazuje, jak si to člověk potom neuhlídá a nedomyslí, co to vlastně dělá."

Nahoru Odpovědět
12.10.2013 17:06
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.10.2013 17:11

Příště po mně nechtěj, abych sem psal konkrétní příklady, kdy se dá s výhodou využít zavináč. A nesnaž se používat file_exist() tam, kde mají být výjimky.

Nahoru Odpovědět
12.10.2013 17:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:12.10.2013 17:13

Ty hlavně nepoužívej zavináč tam, kde být nemá :)

Nahoru Odpovědět
12.10.2013 17:13
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:12.10.2013 17:15

A ty mi hlavně nekecej do toho, jak mám programovat :)

Nahoru Odpovědět
12.10.2013 17:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.