« 1 2 »
Autor Zpráva
Káčer
Profil
Potřebuji pomoci s formulářem a jehoho posíláním na email. Nevím si s tím již rady, tak hledám někoho, kdo by mě pomohl. Zdrojový html kód pošlu. Pomůže mě někdo udělat php zdrojový kód aby mě to odcházelo na firemní email. Na webhostingu je php podporováno.

Děkuji !

Moderátor Davex: Titulek „Potřebuji pomoci“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Davex
Profil
Káčer:
Pokud hledáš někoho šikovného, kdo to za tebe udělá, tak na sebe doplň kontakt a téma přesunu do kategorie Práce a zakázky. Pokud si nevíš rady s nějakou dílčí částí, tak sem vlož podstatnou část kódu, která se ti nedaří zprovoznit a někdo ti poradí jak to opravit.
Káčer
Profil
Nevím zda to mám dobře napsané. Jak to vložím na stránky, vyplním a odešlu, tak mě to napíše, že formulář na těchto stránkách není k dispozici a odeslání selhalo. Proto přidávám začátek kódu a kontakt na mě je napakorto@seznam.cz

Kód:

<?php
            $to="zadost@pujcky-lf.cz";
            $extra = "From: $email\r\nReply-To: $email\r\n";
            $subject = "Zadost od ".$mail_odesilatele."";
            $mess = "Jméno: ".$jmeno."\nEmail: ".$email."\n Web: ".$web."\nText:\n".$text.""; 
            mail ($mailodes, $jmeno, $prijmeni, $datum, $rodne, $trbyd, $korad,
               $tel, $mprijem, $zam, $prijemd, $vyse, $delka,
               $spl, $nzni, $nekdz, $exe, $podm, $vypln,); 
        ?>
 <html>
   <head>
   <meta http-equiv="content-type" content="text/html; charset=windows-1250">
     <title>Půjčky LF - formulář žádosti s odesláním</title>
     <style>
     body{color:rgb(0,0,51); font-size:18px; background-color:rgb(0,221,255);}
     #fiel{border:dashed black 4px;}
     
     </style>
   </head>
      <body>
          <div align="center"><h1><u>Žádost o půjčku</u></h1>
          </div>
        <br>
        <br>
        
        <form action="fzadost" method="post" enctype="text/plain"> 
       
        <fieldset id="fiel">
           <legend><big><b>Žádost o půjčku</b></big></legend><br><br> 
      Váš email:<input type="text" name="mailodes" size="30" value="@"><br>  
      Jméno: <input type="text" name="jmeno" size="20"><br>
Tori
Profil
Dáváte funkci mail() strašně moc parametrů - celé tělo e-mailu dejte jen do jedné proměnné (vizte např. PHP FAQ).

edit:
A jestli to je všechno v jednom skriptu (formulář i odesílání), mělo by to vypadat spíš takhle:
<?php
if ($_POST)  { // byl odeslaný formulář?
  $to = "zadost@pujcky-lf.cz"; 
  $email = $_POST['mailodes'];
  $extra = "From: $email\r\nReply-To: $email\r\n"; 
  $subject = "Zadost od $email"; 
  $mess = "Jméno: ".$_POST['jmeno']."\nEmail: ".$email."\n Web: ".$_POST['web']; // .... doplňte si další pole
  mail ($to, $subject, $mess, $extra); 
}
?> 
<html> ... 
  <form>...
Káčer
Profil
Udělal jsem to jak je to výše napsáno a vyhodí mě to při odeslání toto:

The requested URL /fzadost was not found on this server.

Co dělám špatně? Co s tím?

Poradí někdo prosím?
radas
Profil *
protože tady action="fzadost" ma byt nazev skriptu kam se maji data poslat..
čili action="soubor.php"
Káčer
Profil
Změnil jsem action jak jste mě napsal, ale je to pořád to samé. Posílám také část upraveného kódu. Nemám ten formulář vložit jako odkaz přez stránky (ftp). Když dám do stránek odkaz na fzadost.html tak se zobrazí ale nejdou odeslat. A když dám fzadost.php tak se nezobrazí vůbec a napíše to, že vůbec neexistují.

Prosím poraďte.

Kód:

<?php
if ($_POST)  { // byl odeslaný formulář?
  $to = "zadost@pujcky-lf.cz"; 
  $email = $_POST['mailodes'];
  $extra = "From: $email\r\nReply-To: $email\r\n"; 
  $subject = "Zadost od $email"; 
  $mess = "Jméno: ".$_POST['jmeno']."\nEmail: ".$email."\n Web: ".$_POST['web']; 
         "Příjmení ".$_POST['prijmeni']."\nEmail: ".$email"\n Web: ".$_POST['web'];
         "Datum narození ".$_POST['datum]."\nEmail: ".$email"\n Web ".$_POST['web'];
         "Rodné číslo ".$_POST['rodne']."\nEmail: ".$email"\n Web ".$_POST['web'];
         "Trvalé bydliště ".$_POST['trbyd']."\nEmail: ".$email"\n Web "$_POST['web'];
         "Korenspondenční adresa ".$_POST['korad']."\nEmail: ".$email"\n Web "$_POST['web']; //.....dál to pokračuje ještě 14 položkami 
       
  mail ($to, $subject, $mess, $extra);
  }
  ?> 
 <html>
   <head>
   <meta http-equiv="content-type" content="text/html; charset=windows-1250">
     <title>Půjčky LF - formulář žádosti s odesláním</title>
     <style>
     body{color:rgb(0,0,51); font-size:18px; background-color:rgb(0,221,255);}
     #fiel{border:dashed black 4px;}
     
     </style>
   </head>
      <body>
          <div align="center"><h1><u>Žádost o půjčku</u></h1>
          </div>
        <br>
        <br>
        
        <form action="soubor.php" method="Post" enctype="text/plain"> 
       
        <fieldset id="fiel">
           <legend><big><b>Žádost o půjčku</b></big></legend><br><br> 
      Váš email:<input type="text" name="mailodes" size="30" value="@"><br><br>  
      Jméno: <input type="text" name="jmeno" size="20"><br><br>
      Příjmení: <input type="text" name="prijmeni" size="25"><br><br>
      Datum narození: <input type="text" name="datum" size="9"> (den. měsíc. rok)
                       <br><br>
      Rodné číslo: <input type="text" name="rodne" size="11" value="/"> (ve tvaru
                      xxxxxx/xxxx) <br><br>
      Trvalé bydliště: <input type="text" name="trbyd" size="50">
                         (ulice, čp., PSČ, město)<br><br>
      Korenspondenční adresa: <input type="text" name="korad" size="50">
                         (ulice, čp., PSČ, město) <br><br>

Moderátor Davex: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Davex
Profil
Kód, který si sem vložil je PHP skript, a aby se spustil, tak musí být uložen v souboru s libovolným názvem a příponou .php. Může se jmenovat třeba zadost.php. Toto jméno by pak mělo být v hodnotě atributu action="zadost.php" formuláře. Také může být hodnota prázdná, ale tím se pro začátek netrap. Když pak v prohlížeči otevřeš URL http://www.tvuj-web.cz/zadost.php, tak by se měl formulář správně odeslat.

... ale ve skriptu máš syntaktické chyby, takže to fungovat nebude. Řádky číslo sedm až dvanáct nemají končit středníkem, ale tečkou, nebo radějí nekončit středníkem a následující řádky začínat tečkou.
... a předpokládám, že e-mailovou adresu a URL webu budeš chtít jen jednou.

$mess = "Jméno: ".$_POST['jmeno']
         . "Příjmení ".$_POST['prijmeni']."\nEmail: ".$email."\n Web: ".$_POST['web']
         . "Datum narození ".$_POST['datum']
         . "Rodné číslo ".$_POST['rodne']
         . "Trvalé bydliště ".$_POST['trbyd']
         . "Korenspondenční adresa ".$_POST['korad'] //.....dál to pokračuje ještě 14 položkami 
         . "\n";// poslední řádek bude končit středníkem
       
Káčer
Profil
Formulář se mě již zobrazuje, ale ikdyž ho vyplním a kliknu na ODESLAT tak se mě zobrazí formulář znova - prázdný, ale na email, který tam mám uvedený mě nic nedoletí. Proč??

Podí mě někdo?

Přikládám začátek kódu:

<?php
if ($_POST)  { // byl odeslaný formulář?
  $to = "zadost@pujcky-lf.cz"; 
  $email = $_POST['mailodes'];
  $extra = "From: $email\r\nReply-To: $email\r\n"; 
  $subject = "Zadost od $email"; 
  $mess = "Jméno: ".$_POST['jmeno'] 
         . "Příjmení ".$_POST['prijmeni']."\nEmail: ".$email."\n Web: ".$_POST['web']
         . "Datum narození ".$_POST['datum']
         . "Rodné číslo ".$_POST['rodne']
         . "Trvalé bydliště ".$_POST['trbyd']
         . "Korenspondenční adresa ".$_POST['korad']
         . "Telefon ".$_POST['tel']
         . "Čistý měsíční příjem ".$_POST['mprijem']
         . "Zaměstnání ".$_POST['zam']
         . "Měsíční příjem domácnosti ".$_POST['prijemd']
         . "Výše půjčky ".$_POST['vyse']
         . "Délka splácení ".$_POST['delka']
         . "Číslo účtu ".$_POST['ucet']
         . "Kód banky ".$_POST['kod']
         . "Poštou ".$_POST['post']
         . "Máte v tuto chvíli půjčku u fi LF? ".$_POST['nzni']
         . "Měl jste někdy půjčku u fi LF? ".$_POST['nekdz']
         . "Máte jinde půjčku či exekuci? ".$_POST['exe']
         . "Souhlasím s všeob. podmínkami ".$_POST['podm']
         . "Datum vyplnění ".$_POST['vypln'];
  mail ($to, $subject, $mess, $extra);
  }
  ?> 
 <html>

Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Adrifinel
Profil *
Nechci nic říkat, ale já bych osobně formulář, kde musím zadávat rodné číslo nevyplnila ani omylem.
Joker
Profil
Káčer:
V čem může být chyba?
Je to rozbitý.

Dostane se to k tomu kódu? Vleze to do té větve? Neskončí to nějakou chybou?
Káčer
Profil
ikdyž ho vypíši a dám odeslat tak se mě zobrazí znova ten formulář ale prázdný a email nic nepřijde
o_O
Profil
Káčer:
Zkoušíte to na hostingu, nebo na svém PC?
Káčer
Profil
Mám to na webu. Na webhostingu je to povolený a když sem se ptal na tento problém tak mě bylo řečeno že je to vše nastaveno a povoleno.
o_O
Profil
Káčer:
E-mail se neodešle, nebo nedorazí? To je velmi důležitá otázka.

Přepište řádek 27 na:
if(!mail ($to, $subject, $mess, $extra))
  die("Nelze odeslat e-mail");
Káčer
Profil
Je to to samé nic to nepíše. Mám zaslat kompletně celý kód?
o_O
Profil
Káčer:
Je to to samé nic to nepíše
To znamená 2 možnosti:
1) Script je ukončen dříve a k odeslání e-mailu nedojde
2) E-mail je odeslán ale není doručen adresátovi.

Pro vyloučení první možnosti lze jednoduše přepsat podmínku (zrušit vykřičník, přepsat hlášku), u druhé možnosti to například může blokovat antispam, aj.
Joker
Profil
Káčer:
Mám zaslat kompletně celý kód?
Ne. Ale identifikovat místo, kde vzniká problém.
Káčer
Profil
Část scriptu is HTML scriptem zasílám. Kde může být chyba netuším. Vypíšu a nedojde. Co změnit nevím.

<?php
if ($_POST)  { 
  $to = "zadost@pujcky-lf.cz"; 
  $email = $_POST['mailodes'];
  $extra = "From: $email\r\nReply-To: $email\r\n"; 
  $subject = "Zadost od $email"; 
  $mess = "Jméno: ".$_POST['jmeno'] 
         . "Příjmení ".$_POST['prijmeni']."\nEmail: ".$email."\n Web: ".$_POST['web']
         . "Datum narození ".$_POST['datum']
         . "Rodné číslo ".$_POST['rodne']
         . "Trvalé bydliště ".$_POST['trbyd']
         . "Korenspondenční adresa ".$_POST['korad']
         . "Telefon ".$_POST['tel']
         . "Čistý měsíční příjem ".$_POST['mprijem']
         . "Zaměstnání ".$_POST['zam']
         . "Měsíční příjem domácnosti ".$_POST['prijemd']
         . "Výše půjčky ".$_POST['vyse']
         . "Délka splácení ".$_POST['delka']
         . "Číslo účtu ".$_POST['ucet']
         . "Kód banky ".$_POST['kod']
         . "Poštou ".$_POST['post']
         . "Máte v tuto chvíli půjčku u fi LF? ".$_POST['nzni']
         . "Měl jste někdy půjčku u fi LF? ".$_POST['nekdz']
         . "Máte jinde půjčku či exekuci? ".$_POST['exe']
         . "Souhlasím s všeob. podmínkami ".$_POST['podm']
         . "Datum vyplnění ".$_POST['vypln'];
  mail ($to, $subject, $mess, $extra);
     die("Nelze odeslat e-mail");
  }
  ?> 
 <html>
   <head>
   <meta http-equiv="content-type" content="text/html; charset=windows-1250">
     <title>Půjčky LF - formulář žádosti s odesláním</title>
     <style>
     body{color:rgb(0,0,51); font-size:18px; background-color:rgb(0,221,255);}
     #fiel{border:dashed black 4px;}
     
     </style>
   </head>
      <body>
          <div align="center"><h1><u>Žádost o půjčku</u></h1>
          </div>
        <br>
        <br>
        
        <form action="zadost.php" method="Post" enctype="text/plain"> 
o_O
Profil
Káčer:
mail ($to, $subject, $mess, $extra);
die("Nelze odeslat e-mail");
Vypíše se ta hláška, nebo ne?
Káčer
Profil
Hláška se nevypíše.
o_O
Profil
Káčer:
Z <form> zrušte enctype a přepište mail() na:
if(!mail ($to, $subject, $mess, $extra)) 
  die("Nelze odeslat e-mail");
die("E-mail byl odeslán");
Káčer
Profil
teď mě to napsalo Nelze odeslat e-mail
o_O
Profil
Zkuste
<?php 
if ($_POST)  {  
  $to = "zadost@pujcky-lf.cz";  
  $email = $_POST['mailodes']; 
  $extra = "From: $email\r\nReply-To: $email\r\n";  
  $subject = "Zadost od $email";  
  $mess = "Jméno: ".$_POST['jmeno']  
         . "\nPříjmení ".$_POST['prijmeni']."\nEmail: ".$email."\n Web: ".$_POST['web'] 
         . "\nDatum narození ".$_POST['datum'] 
         . "\nRodné číslo ".$_POST['rodne'] 
         . "\nTrvalé bydliště ".$_POST['trbyd'] 
         . "\nKorenspondenční adresa ".$_POST['korad'] 
         . "\nTelefon ".$_POST['tel'] 
         . "\nČistý měsíční příjem ".$_POST['mprijem'] 
         . "\nZaměstnání ".$_POST['zam'] 
         . "\nMěsíční příjem domácnosti ".$_POST['prijemd'] 
         . "\nVýše půjčky ".$_POST['vyse'] 
         . "\nDélka splácení ".$_POST['delka'] 
         . "\nČíslo účtu ".$_POST['ucet'] 
         . "\nKód banky ".$_POST['kod'] 
         . "\nPoštou ".$_POST['post'] 
         . "\nMáte v tuto chvíli půjčku u fi LF? ".$_POST['nzni'] 
         . "\nMěl jste někdy půjčku u fi LF? ".$_POST['nekdz'] 
         . "\nMáte jinde půjčku či exekuci? ".$_POST['exe'] 
         . "\nSouhlasím s všeob. podmínkami ".$_POST['podm'] 
         . "\nDatum vyplnění ".$_POST['vypln']; 
  if(!mail ($to, $subject, $mess, $extra)) 
     die("Nelze odeslat e-mail");
  die("E-mail byl odeslán"); 
  } 
  ?>  
Káčer
Profil
Teď to napsalo že email byl odeslán ale zatím na email nic nedošlo. Nevíš jaký scriptem nebo podle čeho by se dalo zabezpečit aby mě neposlali prázdný nebo poloprázdný tento formulář
Káčer
Profil
mohlo by to být pomocí tohoto?
Část zasílám.

<script>
            function form(){
            if(document.form.form2.value=="") 
            window.alert("nevyplnil(a) jste jméno!");
            else if(document.form.form3.value=="")
            window.alert("nevyplnil(a) jste přijmení!");
            else if(document.form.form4.value=="") 
            window.alert("nevyplnil(a) jste datum narození!");
            else if(document.form.form5.value=="") 
            window.alert("nevyplnil(a) jste rodné číslo!");
            else if(document.form.form6.value=="") 
o_O
Profil
Káčer:
mohlo by to být pomocí tohoto?
Ne, toto se ověřuje na straně návštěvníka (při vypnutém javasciptu se ani nezobrazí), tudíž to nijak nepomůže.

Použil bych spojení funkcí trim() a empty(), pro tak velký formulář bych asi všechny údaje projel, ručně by to bylo příliš zdlouhavé. :-)

Nějak takto:
function jePrazdny($name){
  $_POST[$name]=trim($_POST[$name]); // Zbavíme se zbytečných mezer na začátku, konci atd.
  if(!empty($_POST[$name])) // Je vyplněn?
    return true; // Ano
  return false; // Ne
}
if($_POST){
  foreach($_POST AS $key=>$value) // Projedeme všechny odeslané hodnoty - v $key je name prvku formuláře a v $value je jeho hodnota
    if(!jePrazdny($key))
      exit(header("Location: zadost.php")); // Není vyplněn, přesměrujeme zpátky

... // zbytek scriptu
Káčer
Profil
A šlo by podle toho scriptu co jsem zaslal, aby to lidem co ho vyplňují řeklo když něco nevyplní aby to doplnili a když to nedoplní aby to nešlo odeslat? Podle mého by to tím mojim scriptem šlo. Co ty na to?


Zatím mě ten formulář co jsem odeslal nepřišel na email. Dá se to nějak zjistit jak to s ním vypadá?


Promiň již jsem to našel ve spemech. Jak to udělat aby to tam nechodilo?


Ale mám u něho ještě velký problém. Špatně jsou vypsané otázky (formuláře) a odpovědi - některé nejdou přečíst vůbec. Hlavně kde jsou čárky či háčky tak to tam chybí úplně. Prosím o radu co s tím?

Moderátor Davex: Sloučeny příspěvky do jednoho. Registrovaní členové mohou příspěvky upravovat, tak toho prosím příště využij, ať zbytečně nenatahuješ téma.
radas
Profil *
Moderátor Davex: Přesunuto z duplicity.

Myslim, že tohle Vám bude stačit

http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=2111#3
Káčer
Profil
Moderátor Davex: Přesunuto z duplicity.

Nevím zda to mám správně ale zatím to nefunguje. Zasílám úpravu.

<?php
function autoUTF($s)
{
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8
    {
        return $s;
    }
    elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250
    {
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    }
    else // assume ISO-8859-2
    {
        return iconv('ISO-8859-2', 'UTF-8', $s);
    }
} 
 function cs_mail($to, $subject, $mess, $extra = "")
{
    $subject = "=?utf-8?B?".base64_encode(autoUTF($predmet))."?=";
    $extra .= "MIME-Version: 1.0\r\n";
    $extra .= "Content-Type: text/plain; charset=\"utf-8\"\r\n";
    $extra .= "Content-Transfer-Encoding: base64\r\n";
    $mess = base64_encode(autoUTF($zprava));
    return mail($to, $subject, $mess, $extra);
}
if ($_POST)  {  
  $to = "zadost@pujcky-lf.cz";  
  $email = $_POST['mailodes']; 
  $extra = "From: $email\r\nReply-To: $email\r\n";  
  $subject = "Zadost od $email";  
  $mess = "Jméno: ".$_POST['jmeno']  
         . "\nPříjmení ".$_POST['prijmeni']."\nEmail: ".$email."\n Web: ".$_POST['web'] 
         . "\nDatum narození ".$_POST['datum'] 
         . "\nRodné číslo ".$_POST['rodne'] 
         . "\nTrvalé bydliště ".$_POST['trbyd'] 
         . "\nKorenspondenční adresa ".$_POST['korad'] 
         . "\nTelefon ".$_POST['tel'] 
         . "\nČistý měsíční příjem ".$_POST['mprijem'] 
         . "\nZaměstnání ".$_POST['zam'] 
         . "\nMěsíční příjem domácnosti ".$_POST['prijemd'] 
         . "\nVýše půjčky ".$_POST['vyse'] 
         . "\nDélka splácení ".$_POST['delka'] 
         . "\nČíslo účtu ".$_POST['ucet'] 
         . "\nKód banky ".$_POST['kod'] 
         . "\nPoštou ".$_POST['post'] 
         . "\nMáte v tuto chvíli půjčku u fi LF? ".$_POST['nzni'] 
         . "\nMěl jste někdy půjčku u fi LF? ".$_POST['nekdz'] 
         . "\nMáte jinde půjčku či exekuci? ".$_POST['exe'] 
         . "\nSouhlasím s všeob. podmínkami ".$_POST['podm'] 
         . "\nDatum vyplnění ".$_POST['vypln']; 
  if(!mail ($to, $subject, $mess, $extra)) 
     die("Nelze odeslat e-mail");
  die("E-mail byl odeslán"); 
  } 
  ?>  
 <html>
   <head>
   <meta http-equiv="content-type" content="text/html; charset=windows-1250">
     <title>Půjčky LF - formulář žádosti s odesláním</title>
     <style>
     body{color:rgb(0,0,51); font-size:18px; background-color:rgb(0,221,255);}
     #fiel{border:dashed black 4px;}
     
     </style>
   </head>
      <body>
          <div align="center"><h1><u>Žádost o půjčku</u></h1>
          </div>
        <br>
        <br>
        
        <form action="zadost.php" method="Post">
« 1 2 »

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0