Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przekierowanie podczas kliknięcia w submit
Forum PHP.pl > Forum > PHP
Xtremex
Witam wszystkich.
Temat ostatni napisałem i piszę drugi, ponieważ minęło sporo czasu i ciut się prośba zmienia.

Chciałbym aby podczas, gdy formularz zostanie wysłany przejść na inną stronę (przykładowo www.wp.pl).
Oto kod
  1. <?php
  2. if (count($_POST))
  3. {
  4.    ////////// USTAWIENIA //////////
  5.    $email = 'mail';
  6.    $subject = 'temat';
  7.    $charset = 'iso-8859-2';
  8.  
  9.    //////////////////////////////
  10.    $head =
  11.        "MIME-Version: 1.0r\n" .
  12.        "Content-Type: text/plain; charset=$charsetr\n" .
  13.        "Content-Transfer-Encoding: 8bit";
  14.    
  15.    foreach ($_POST as $name => $value)
  16.    {
  17.        if (is_array($value))
  18.        {
  19.            for ($i = 0; $i < count($value); $i++)
  20.            {
  21.                $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "r\n";
  22.            }
  23.        }
  24.        else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "r\n";
  25.    }
  26.    mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head);
  27. }
  28. else
  29. {
  30. ?>
  31. <script type='text/javascript'>g_FormName = "Imie";g_FieldName = "IMIE";</script>Prosze o wypelnienie formularza<br/><br/><form action="?" method="post" name="Imie">
  32.  
  33. <?php
  34. }
  35. ?>


Teraz moje pytanie: jak to zrobić?
Kiedy wstawialem header, wyskakiwal blad. Kiedy umieszczałem ob_start() i ob_end_flush(), błąd był taki sam.
Czy mógłby ktoś mi pomóc i umieścić to przekierowanie w moim kodzie?
Z góry dziękuję.


Pozdrawiam,
Xtremex
Crozin
Dodanie po mail(...)
  1. <?php
  2. header('Location: <a href=\"http://wp.pl');&#092;" target=\"_blank\">http://wp.pl');</a> exit;
  3. ?>
Przy powyższym kodzie powinno nie skutkować błędem.
Czy jest to cały plik, czy może wczytujesz go wewnątrz innego?
Xtremex
Parse error: syntax error, unexpected '&' in /var/www/sites/yoyo.pl/d/e/[str]/index.php on line 662
Jest to linia, gdzie wstawiłem twoją linię.
erix
Nie przepisuj co do joty, bo parser na forum nawala.
Kod
header('Location: http://adres.pl');
Crozin
Po wykonaniu nagłówka przekierowania warto dodać coś w stylu:
  1. <?php
  2. die('Przekierowanie na wp.pl');
  3. ?>
Aby mieć pewność, że gdyby użytkownik wyłączył przekierowania nie miał dostępu do reszty danych.
Xtremex
Kod
Warning: Cannot modify header information - headers already sent by (output started at /var/www/sites/yoyo.pl/d/e/[str]/index.php:7) in /var/www/sites/yoyo.pl/d/e/[str]/index.php on line 662


Teraz mam tak:
  1. <?php
  2. if (count($_POST))
  3. {
  4.   ////////// USTAWIENIA //////////
  5.   $email = 'mail';
  6.   $subject = 'temat';
  7.   $charset = 'iso-8859-2';
  8.  
  9.   //////////////////////////////
  10.   $head =
  11.       "MIME-Version: 1.0r\n" .
  12.       "Content-Type: text/plain; charset=$charsetr\n" .
  13.       "Content-Transfer-Encoding: 8bit";
  14.  
  15.   foreach ($_POST as $name => $value)
  16.   {
  17.       if (is_array($value))
  18.       {
  19.           for ($i = 0; $i < count($value); $i++)
  20.           {
  21.               $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "r\n";
  22.           }
  23.       }
  24.       else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "r\n";
  25.   }
  26.   mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head);
  27. header('Location: <a href=\"http://wp.pl');&#092;" target=\"_blank\">http://wp.pl');</a>
  28. }
  29. else
  30. {
  31. ?>
  32. <script type='text/javascript'>g_FormName = "Imie";g_FieldName = "IMIE";</script>Prosze o wypelnienie formularza<br/><br/><form action="?" method="post" name="Imie">
  33.  
  34. <?php
  35. }
  36. ?>
erix
Wpisz sobie treść błędu do wyszukiwarki...

Było SETKI razy.
Xtremex
Napisałem, że ob_start() i ob_end_flush() nic mi nie zmienia i błąd jest taki sam.
erix
Ale jest taki mały szczegół - ob_start" title="Zobacz w manualu PHP" target="_manual musi być dodany na samym początku pliku.

Poza tym, nie wiem, czy czytałeś o BOM.
piotrooo89
klik napisane jak najprościej umiałem...
Xtremex
Aktualnie mam tak
Kod
<?php
                ob_start();
if (count($_POST))
{
    ////////// USTAWIENIA //////////
    $email = 'mail';
    $subject = 'temat';
    $charset = 'Unicode UTF-8';    

    //////////////////////////////
    $head =
        "MIME-Version: 1.0\r\n" .
        "Content-Type: text/plain; charset=$charset\r\n" .
        "Content-Transfer-Encoding: 8bit";
    
    foreach ($_POST as $name => $value)
    {
        if (is_array($value))
        {
            for ($i = 0; $i < count($value); $i++)
            {
                $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
            }
        }
        else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
    }
    mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head);
    header('Location: http://wp.pl');
}
else
{
?>
<script type='text/javascript'>g_FormName = "Imie";g_FieldName = "IMIE";</script><br/><form action="?" method="post" name="Imie">

<?php
}
ob_end_flush();
?>

Poczytałem również o BOM'ie (ustawiłem kodowanie strony na UTF-8) i nadal wyskakuje błąd podczas kliknięcia w submit:
Kod
Warning: Cannot modify header information - headers already sent by (output started at /var/www/sites/yoyo.pl/d/e/[str]/index.php:7) in /var/www/sites/yoyo.pl/d/e/[str]/index.php on line 665




PS. Zamieniłem kodowanie w <meta> oraz w skrypcie.
EDIT:
@UP
Kiedy dodaję
Kod
session_start();

wyskakują mi kolejne błędy:
Kod
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/sites/yoyo.pl/d/e/[str]/index.php:7) in /var/www/sites/yoyo.pl/d/e/[str]/index.php on line 640

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/sites/yoyo.pl/d/e/[str]/index.php:7) in /var/www/sites/yoyo.pl/d/e/[str]/index.php on line 640
piotrooo89
sprawdz czy nie masz jakiegoś "białego" znaku przez ob_start... a z tego co widzę to masz tam jakąś spacje.
wrzasq
@piotrooo89: ale w kodzie PHP moze byc.

@Xtremex: czy to jest CALY PLIK? czy tylko jakis "caly fragment"? nie masz przed otwarciem znacznika <?php niczego? albo nie inkludujesz tego pliku gdzies indziej? jesli nie, to tak jak poprzednicy mowili poczytaj o BOM. nie piszesz czasem w notatniku? i jaki to server? moze trzymasz na jakims darmowym serwerze, ktory automatycznie zalacza jakas tresc na pcozatku...
Xtremex
@wrzasq
Nie jest to cały plik, lecz tylko część.
Piszę w notatniku++ (Notepad++)
Jest to na darmowym serwerze Yoyo.pl
piotrooo89
pokaż pierwsza linie pliku.
wrzasq
yoyo.pl chyba dodaje swoje reklamy na sam poczatek i wydaje mi sie ze nie robia tego zadnym filtrem na koniec, ale wrzucaja po prostu bezmyslnie przed skrypt. ale moge sie mylic. natomiast skoro to nie caly plik, to czy masz cos przed tym blokiem kodu PHP? przed znacznikiem <?php.

-edit-

wlasnie zobaczylem twoje logi:

Kod
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/sites/yoyo.pl/d/e/[str]/index.php:7) in /var/www/sites/yoyo.pl/d/e/[str]/index.php on [b]line 640[/b]

linia 640?! to ty tam pewnie caly skrypt przed soba masz. eh... czy ludzia juz na prawde trzeba lopata wszystko tlumaczyc? trudno pomysles samemu? ob_start() ma byc na SAMYM POCZATKU PLIKU! myslisz, ze to magiczna linijka, ktora cofnie cos, co juz sie stalo?
Xtremex
Umieściłem na samym początku ob_start(), lecz jest tak samo, z tym że napisane jest, że w 1 linii ten błąd.
Sprawdzałem też na własno postawionym serwerze - żadnego efektu.
@wrzasq
Przed tym kodem co podałem mam 640 linii.
@piotrooo89
Kod
<html>
piotrooo89
twoja pierwsza linia powinna wyglądać tak:
  1. <?php
  2. ?>
  3. <html>


a ostatnia:
  1. </html>
  2. <?php
  3. ?>
Xtremex
Bardzo dziękuję wszystkim za pomoc. Troszkę się zamotałem i "nie słyszałem jak się do mnie mówi", lecz wreszcie udało się smile.gif Jeszcze raz bardzo wszystkim dziękuję oraz życzę Wesołych Świąt :]



Pozdrawiam,
Xtremex
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.