PHP redirect po odeslani formulare – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

PHP redirect po odeslani formulare – PHP – Fórum – Programujte.comPHP redirect po odeslani formulare – PHP – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
e-sparco0
Duch
3. 2. 2016   #1
-
0
-

Ahoj, 

snazim se vyresit redirect na thank you page po odeslani formulare, vyskakuje na me error msg:

Warning: Cannot modify header information - headers already sent by

php form:

<?php 
    if (isset($_POST['submit'])) {
        $to = 'muj@gmail.com';
        $subject = 'New Message from Contact';
        $message = $_POST['message'];
        $email = $_POST['email'];
        $headers = 'From: webmaster@example.com' . "\r\n" .
                    'Reply-To: webmaster@example.com' . "\r\n" .
                    'X-Mailer: PHP/' . phpversion();
        
            
        mail($to, $subject, $message, $email, $headers);
        header( 'Location: http://www.google.com/' );
        
    }
?>

Snazil jsem se googlit, bohuzel se mi nepovedlo najit odpoved, ktera by mi pomohla.

PS: Jsem php zacatecnik.

Diky

Tomas

Nahlásit jako SPAM
IP: 94.31.28.–
Kit+15
Guru
3. 2. 2016   #2
-
0
-

#1 e-sparco
Funkce header() potřebuje mít čistý výstup, tzn. před ní nesmíš mít v programu žádné echo ani jiný výstup textu.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
z_moravec
~ Redaktor
+3
Posthunter
3. 2. 2016   #3
-
+2
-
Zajímavé

#1 e-sparco
Stačí mít prázdný znak před <? a už je problém. Zkontroluj si, že prvním znakem v souboru je špičatá závorka.

Nahlásit jako SPAM
IP: 46.39.183.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
JacobCZ0
Newbie
3. 2. 2016   #4
-
+1
-
Zajímavé
Kit +

Taky si dej bacha na konec souboru, pokud v něm máš jen PHP tak by na konci neměl být ?>, pokud soubor takto uzavřeš a za tímto tagem se vyskytne prázdný znak, může dojít ke stejnému problému...

Nahlásit jako SPAM
IP: 37.188.238.–
e-sparco0
Duch
4. 2. 2016   #5
-
0
-

Ahoj, moc vsem děkuju za odpovedi. Avsak porad se mi to nedari,

zkousel jsem dat kod

    header( 'Location: http://www.yoursite.com/new_page.html' );

pred kod formulare, ale to nepomaha, hned mi vyskoci hlaska:

Warning: Cannot modify header information - headers already sent

Napadlo me samotnou informaci header naincludovat uplne na zacatek indexu, tzn pred <html> ale to me hned presmeruje pryc a ne az po odeslani formulare, navic mi to neprijde jako spravny postup.

Prazdne mezery pred a po nemam viz:

Připojen obrázek.

Nahlásit jako SPAM
IP: 94.31.28.–
e-sparco0
Duch
4. 2. 2016   #6
-
0
-

Taky jsem si vsimnul, ze mi informace $headers se neprenaseji, tzn, porad mi chodi emaily z w89844@wedos.net coz je emailovka poskytovatele webshotingu. Zkousel jsem menit poradi $to, $headers a ostatnich i v mail(); ale to mi vzdycky prestalo neco z toho fungovat..

Mozna, pokud to nekdy nekdo psal to presmerovani po odeslani formu, tak kdyz mi sem zkopirujete kod, tak to podle toho "opisu".

Diky

T

Nahlásit jako SPAM
IP: 94.31.28.–
Kit+15
Guru
4. 2. 2016   #7
-
0
-

#5 e-sparco
Je také možné, že na začátku souboru překáží 3 bajty BOM, které v editoru nejsou vidět, ale způsobují tyto potíže. Jsou vidět v hexa výpisu.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
e-sparco0
Duch
4. 2. 2016   #8
-
0
-

Ou, diky za tip, mylsim ale, ze ten hlavni problem je v tom, ze chci presmerovavat nekam pomoci header funkce, ale to nelze delat pokud mam nejaky vystup. viz koment

Funkce header() potřebuje mít čistý výstup, tzn. před ní nesmíš mít v programu žádné echo ani jiný výstup textu.

Coz chapu, co tim Kit myslel, ale bohuzel nevim jak to prakticky napsat.

Nahlásit jako SPAM
IP: 94.31.28.–
Kit+15
Guru
4. 2. 2016   #9
-
0
-

#8 e-sparco
Zkus někde vystavit ten SOUBOR send.php . Předpokládám, že ten skript se volá přímo z formuláře, že nepoužíváš žádný include, require apod.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
e-sparco0
Duch
4. 2. 2016   #10
-
0
-
Nahlásit jako SPAM
IP: 94.31.28.–
Kit+15
Guru
4. 2. 2016   #11
-
+1
-
Zajímavé

#10 e-sparco
Je to jasné. Před odesláním mail() natahuješ v index.php zcela zbytečně soubor templates/homepage.php

Stačí ty dva řádky v index.php přehodit: 

<?php
include 'inc/send.php';
include 'templates/homepage.php';

A ještě jedna drobnost na konci send.php: 

header('Location: http://www.yoursite.com/new_page.html');
exit;

Ten exit; je tam docela důležitý, aby se nenačetl zbytek skriptu.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
e-sparco0
Duch
4. 2. 2016   #12
-
0
-

zvlastni, to poradi tech includu na indexu jsem prave zkousel prohazovat a presto mi to neslo, presto kdyz jsem to zkusil ted, tak se to povedlo, kazdopadne, problem vyresen, moc děkuju za pomoc!

Nahlásit jako SPAM
IP: 94.31.28.–
Kit+15
Guru
4. 2. 2016   #13
-
0
-

#12 e-sparco
Ono by to chtělo ještě pár změn:

  • soubor homepage.php by se měl jmenovat spíš index.php - vstupní brána.
  • ve formuláři by místo action="index.php" mělo být action="send.php"
  • název adresáře "inc" sice říká, že jsou tam nějaké includy, ale vůbec neříká jaké
  • na můj vkus máš pro tak jednoduchou stránku příliš mnoho includů - navíc uspořádaných tak, že časem budeš mít problém se v tom vyznat
  • nedávej ?> na konce PHP skriptů. Nepatří tam

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
e-sparco0
Duch
4. 2. 2016   #14
-
0
-

Doopravím, díky za tipy, jak jsem rikal, jsem zacatecnik, takze se teprve ucim zasady slusnyho programovani :)

Nahlásit jako SPAM
IP: 94.31.28.–
Kit+15
Guru
4. 2. 2016   #15
-
+1
-
Zajímavé

#14 e-sparco
Zdá se, že nejsi úplný začátečník, když jsi dokázal nahrát projekt na GitHub :)

Práce s Gitem je totiž dovednost, kterou začátečníci obvykle moc nezvládají.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
vohratom0
Duch
4. 2. 2016   #16
-
0
-

haha, děkuju za milej kompliment, ja bych rek, ze se mam jeste hodne co ucit :))

Hezkej vecer.

T

Nahlásit jako SPAM
IP: 86.183.12.–
peter
~ Anonymní uživatel
4014 příspěvků
5. 2. 2016   #17
-
0
-

Nebo by stacilo dat na zacatek (nejlepe do config.php, ktery includujes vsude) ob_start(). Prehozenim ale ziskas na rychlosti zpracovani.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:4512:f5...–
Kit+15
Guru
5. 2. 2016   #18
-
0
-

#17 peter
ob_start() je jen berličkou pro ty, kteří to neumí udělat lépe. Nikdy jsem to nepotřeboval, neboť v celé aplikaci mívám jen jedno jediné echo.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
e-sparco0
Duch
5. 2. 2016   #19
-
0
-

I tak děkuju za tip Peter :)

Nahlásit jako SPAM
IP: 94.31.28.–
Kit+15
Guru
5. 2. 2016   #20
-
0
-

#19 e-sparco
Netvrdím, že ob_start() a navazující funkce jsou zcela k ničemu, ale PHP nabízí mnoho výhodnějších alternativ. Dlouho jsem používal například Heredoc, který umí přímo nahrazovat proměnné, které do něj vložíš. Používám to vlastně dodnes na primitivní záležitosti a také například na velmi dlouhé SQL dotazy.

Složitější výstupy řeším přes výstupní šablony, protože se dají řídit tokem dat, nahrazují nebezpečné znaky za enity a zároveň zajišťují validitu dokumentu.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
JacobCZ0
Newbie
5. 2. 2016   #21
-
0
-

#15 Kit
Což je ovšem IMHO dosti smutné vzhledem k tomu, jak je Git snadný. GitHub má ještě k tomu desktopovou aplikaci, se kterou to opravdu musí zvládnout i naprostý idiot...   

Nahlásit jako SPAM
IP: 147.229.63.–
Kit+15
Guru
5. 2. 2016   #22
-
0
-

#21 JacobCZ
Jedna věc je zvládnout "git commit" - bez toho se ani začátečník nehne. Jakmile se začnou používat větve, bez kterých používání Gitu moc nedává smysl, začíná jít do tuhého. Mnozí mají problém rozlišit, kdy mají použít merge a kdy rebase, jak pracovat s otevřenou smyčkou přes veřejný repozitář, jak hledat v historii, jak nastavit správně filtry,...

Je toho strašně moc, co Git umí, ale každý využívá pouze pár procent jeho schopností. Je to dáno tím, že je to otevřený nástroj, který se dá libovolně modifikovat k obrazu svému pouhou změnou konfigurace.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
JacobCZ0
Newbie
5. 2. 2016   #23
-
0
-

#22 Kit
Naprosto s tebou souhlasím, jen říkám, že i s GUI alespoň základy Gitu zvládne i začátečník.

Nahlásit jako SPAM
IP: 147.229.63.–
Kit+15
Guru
5. 2. 2016   #24
-
0
-

#23 JacobCZ
S GUI Gitu jsem se ještě nesetkal. Pracuji s ním v terminálu. Obvykle mě jakékoli GUI omezuje, proto se jim cíleně vyhýbám.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
JacobCZ0
Newbie
6. 2. 2016   #25
-
+1
-
Zajímavé

#24 Kit
Zkus si najít "GitHub Desktop". Odobně jsem taky spokojenější s terminálem, ale pokud jsi začátečník a děláš s GitHubem tak je tahle appka opravdu velice dobrá. SourceTree od Atlassianu také stojí za zmínku...

Nahlásit jako SPAM
IP: 147.229.63.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý