Autor Zpráva
Tody
Profil
Zdravím Vás
Jsem totální záčátečník v PHP. Upravte mi prosím kód níže abych z toho dostal diakritiku.
Ještě bych měl jeden dotaz. Jak udělat přesměrování, aby ty hlášky o průběhu odeslání mailu se nezobrazovaly na stránce odeslimail.php, ale na stránce html, kde je vytvořen odesílací formulář?

Děkuji za odpovědi.


<?php
     if(isset($_POST['email'])) {
                                 $email_to = "nejaky@email.eu";
                                 $email_subject = "Registrace HW";
     
     
    function died($error) {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form you submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }
     
    // validation expected data exists
    if
      (!isset($_POST['first_name']) ||
       !isset($_POST['last_name']) ||
       !isset($_POST['email']) ||
       !isset($_POST['street']) ||
       !isset($_POST['city'])) 
       {
        died('Registrace neprobehla uspesne, vznikl nasledujici problem:');       
        }
     
    $first_name = $_POST['first_name']; // required
    $last_name = $_POST['last_name']; // required
    $email_from = $_POST['email']; // required
    $street = $_POST['street']; // required
    $city = $_POST['city']; // required
    $country = $_POST['country']; // required
    
    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$email_from)) {
                                             $error_message .= 'Zadana emailova adresa neni ve spravnem formatu.<br />';
                                             }
                                             
    $string_exp = "/^[A-Za-z0-9ěščřžýáíé .'-]+$/";
    if(!preg_match($string_exp,$first_name)) {
                                              $error_message .= 'Spatne zadane jmeno.<br />';
                                              }
  
    if(!preg_match($string_exp,$last_name))  {
                                              $error_message .= 'Spatne zadane prijmeni<br />';
                                              }
    if(!preg_match($string_exp,$street))     {
                                              $error_message .= 'Spatne zadana ulice.<br />';
                                              }
    
    if(!preg_match($string_exp,$city))       { 
                                              $error_message .= 'Spatne zadane mesto.<br />';
                                              }
                                           
    if(!preg_match($string_exp,$country))    { 
                                              $error_message .= 'Spatne zadana zeme.<br />';
                                              }
    if(strlen($error_message) > 0) {
                                    died($error_message);
                                    }
    
    $email_message = "Zakaznik\n\n";
     
    function clean_string($string) {
                                    $bad = array("content-type","bcc:","to:","cc:","href");
                                    return str_replace($bad,"",$string);
                                    }
     
    $email_message .= "First Name: ".clean_string($first_name)."\n";
    $email_message .= "Last Name: ".clean_string($last_name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Street: ".clean_string($street)."\n";
    $email_message .= "City: ".clean_string($city)."\n";
    $email_message .= "Country: ".clean_string($country)."\n";

     
    // create email headers
    $headers = 'From: '.$email_from."\r\n".
    'Reply-To: '.$email_from."\r\n". 
    'X-Mailer: PHP/' . phpversion()."\r\n".
    'Content-Type: text/plain; charset="utf-8"'."\r\n".
    @mail($email_to, $email_subject, $email_street, $email_message, $headers); }  
?>
 
<!-- include your own success html here -->
 
Registrace probehla v poradku. Pristupte ke kroku 2 a vyberte zpusob platby.
Camo
Profil
Tody:
1. Ak chceš ten výpis o odoslaní na tej istej stránke, tak si daj na tú stránku s formulárom nejaký iframe a nasmeruj si ten formulár(cez target) na ten iframe, ALEBO si tie dva scripty spoj do jedného ALEBO to urob cez Ajax.
2. Z toho čo si napísal sa nedá určiť aký máš problém s tou diakritikou. Chceš ju zakázať, či čo vlastne?
Tori
Profil
Tody:
$string_exp = "/^[A-Za-z0-9ěščřžýáíé .'-]+$/";
Na ověření textu s diakritikou buď přidejte modifikátor i, aby se nerozlišovala velikost písmen (jinak to selže u jakéhokoli velkého písmene s diakritikou). Anebo se to dá napsat i takto:
$string_exp = "/^[\pL\d '.-]+$/u"; To \pL (s modifikátorem u na konci reg.výrazu) znamená jakákoli písmena, včetně arabských, azbuky atd.

Jestli je v doručených e-mailech rozbitá diakritika, koukněte se do Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky.
Tody
Profil
Chtěl bych aby diakritika fungovala bez problémů, u velkých i malých písmen... Řekl bych že mám problém na řádku 82...


Tori:
Pořád nic

Ondřej -> OndĹ™ej
Davex
Profil
Tody:
Řekl bych že mám problém na řádku 82...
Taky si myslím. Na konci nemá být tečka a patří tam středník.
Tody
Profil
Davex:
To také není ono.... Dejte tomu prosím nějakou myšlenku...
Davex
Profil
Tody:
To také není ono...
Dát sem kód s mrakem chyb také není zrovna ono.

Další chyba je třeba hned na řádku 83, kde je navíc parametr $email_street, atd.
Camo
Profil
Tody:
Stránku s formulárom máš v akom kódovaní?
Tody
Profil
Camo:
Také UTF-8


Davex:
Co je špatně na email_street? To spis je tam k nicemu email_message...
Davex
Profil
Tody:
Co je špatně na email_street?
1) Proměnná $email_street není definovaná.
2) Funkce mail() má tři povinné parametry a dva volitelné.

Z dokumentace:
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

To spis je tam k nicemu email_message...
Tak si to zkus, jak hodně je to zbytečné...
Tody
Profil
Davex:
Ano ano, zjistil sem že píšu kravinu, až když sem to okomentoval. :) Nedalo by se to PHP tedy nějak rozhýbat?
Davex
Profil
Samozřejmě, že by se to dalo rozhýbat. Stačí vymazat ten zbytečný parametr s proměnnou $email_street, aby se proměnná s obsahem zprávy přesunula místo něho.
Tody
Profil
Vymazáno, formulář v pohodě odesílá, ale jak na tu češtinu?
Davex
Profil
Na češtinu by mělo zabrat aplikování rady [#3] od Tori nebo [#5].

Zkoušel jsi to? Pokud ano, tak sem vlož aktuální podobu odesílacího kódu s tím pokusem.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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