Autor Zpráva
akali
Profil *
Ahoj, ze stránka se mi na druhou neodesílá formulář

Stránka formular_control.php
<form action="../informace.php" method="POST" id="odeslano_control">
  <input type="hidden" name="odeslano" value="1">
  
  <label>Vaše křestní jméno</label><br>
  <input disabled name="jmeno" size="25" value="<?php echo $_POST['jmeno'];?>"><br>
  
  <label>Vaše příjmení</label><br>
  <input disabled name="prijmeni" size="25" value="<?php echo $_POST['prijmeni'];?>"><br>
  
  <label>Vaše e-mailová schránka</label><br>
  <input disabled name="email" size="25" value="<?php echo $_POST['email'];?>"><br>
  
  <label>Město</label><br>
  <input disabled name="mesto" size="25" value="<?php echo $_POST['mesto'];?>"><br>
  
  <label>Ulice a číslo popisné</label><br>
  <input disabled name="ulice" size="25" value="<?php echo $_POST['ulice'];?>"><br>
  
  <label>PSČ</label><br>
  <input disabled name="psc" size="25" value="<?php echo $_POST['psc'];?>"><br>
  
  <label>Telefonní číslo</label><br>
  <input disabled name="telefon" size="25" value="<?php echo $_POST['telefon'];?>"<br>
  
  
  <input type="submit" value="Závazná objednávka" name="odeslano_control">
</form>


A informace.php
    if ($_POST['zprava']="Při vyplnění poznámky se neprodlouží doba zpracování žádosti Vaší objednávky."){
           $_POST['zprava'] = ""; }
    $zprava = htmlspecialchars($_POST['zprava']);
    $zprava .= "\n\n Jméno:".htmlspecialchars($_POST['jmeno']);
    $zprava .= "\n Příjmení:".htmlspecialchars($_POST['prijmeni']);
    $zprava .= "\n e-mail:".htmlspecialchars($_POST['email']);
    $zprava .= "\n ulice a čp:".htmlspecialchars($_POST['ulice']);
    $zprava .= "\n PSČ:".htmlspecialchars($_POST['psc']);
    $zprava .= "\n Telefonní číslo:".htmlspecialchars($_POST['telefon']);
    $zprava .= "\n Žádám o zboží na stránce:".htmlspecialchars($html);
     
     

A když si zde vypíšu $zprava tak se mi ty proměný prostě nezobrazí.. Kouknul by na to nějaký odborník?
panther
Profil
akali:
formulář se odesílá, jen disabled pole nejsou v proměnné $_POST, uvidíš, když si POST dumpneš.

Jen tak na okraj, je hezké, že používáš <label>, ale zde úplně zbytečně. Aby tento tag plnil svou funkci, musí mít atribut „for“ shodný i ID elementu, ke kterému patří.
<label for="jmeno">Jméno</label>
<input type="text" id="jmeno" name="jmeno">
PostCC
Profil
akali:
Za prvé - v tom formuláři nikde nevidím pole s atributem name="zprava".
Za druhé - konstrukce:

$_POST['zprava']="Při vyplnění poznámky se neprodlouží doba zpracování žádosti Vaší objednávky."


je pravda vždy, tudíž se pokaždé provede podmínka, jejím výsledkem je vymazání obsahu proměnné. Zřejmě hledáte operátor porovnávání místo přiřazení - "==".
akali
Profil *
Panther: Nechápu, co tedy mám udělat aby se to odesílalo? Možná na mě mluvíš moc odborně?

PostCC: Tu podmínku nechci odesílat mailem, když se rovná původnímu value. Takže když to uživatel přepíše, tak se to normálně odešle, ne? Atribut name zprava tam není, protože ji uživatel vyplňuje krok předem
panther
Profil
akali:
Možná na mě mluvíš moc odborně?
odborně? To snad ne :-) Odstraň atribut „disabled“ od všech inputů. S tímto atributem se neodešlou. Zkus si udělat samostatnou stránku, kde bude jeden input disabled a druhý tento atribut mít nebude. Když si dáš var_dump($_POST), uvidíš, že se ti odešlou jen ty inputy, které nejsou disabled.

Zkus si následující:
<form method=post>
  <input type=text name=prvni value=obsah>
  <input type=text name=druhy disabled value=obsah>
  <input type=submit value=odeslat name=submit>
</form>
<?php
if (isset($_POST['submit'])
  var_dump($_POST); //zde bude $_POST['prvni'] = 'obsah' a $_POST['submit'] = 'odeslat', $_POST['druhy'] zde nebude.
?>


Takže když to uživatel přepíše, tak se to normálně odešle, ne?
ne. V podmínce, když porovnáváš, se používají 2 rovnítka. Jedním se přiřazuje hodnota, if($promenna = 'hodnota') je pravda vždy. if ($promenna == 'hodnota') je pravda pouze v případě, že hodnota proměnné $promenna je skutečně hodnota.
if ($promenna = 'hodnota') {} //true vzdy
if ($promenna == 'hodnota') {} //true jen nekdy
Darker
Profil
Za 1.:
Zrušte disabled u políček, aby se odeslala.
object.disabled=false;

A nebo ho tam vůbec nepište.
Za 2.:
Přidejte do formuláře políčko se jménem zpráva a hodnotou "Při vyplnění poznámky se neprodlouží doba zpracování žádosti Vaší objednávky."
Za 3.:
Podmínku v php nahraďte:
    if ($_POST['zprava']=="Při vyplnění poznámky se neprodlouží doba zpracování žádosti Vaší objednávky."){
           $_POST['zprava'] = ""; }

Za 4.: Doporučuju následně kontrolovat zda uživatel pole změnil jinak, než tak jak je uvedeno výše.
Zdar
akali
Profil *
Aha, takže mám použít 2 rovnítka?
$_POST['zprava']=="Při vyplnění poznámky se neprodlouží doba zpracování žádosti Vaší objednávky."


Vyřešil jsem jeden problém, ale mail se mi pořád neodesílá:(
Údaje se na web vypíší, ale mail neodejde. Prosím, kouknul by jste mi na to ještě?

               <?php
                if (isset($_POST['odeslano_control'])){ /*formulář ->   <form action="../informace.php" method="POST" id="odeslano_control">*/
                  echo 'Vaše objednávka byla přijata! Nyní by Vám měl přijít e-mail se všemi informacemi o objednávce!';
                
                  
                   
                  
    if ($_POST['zprava']="Při vyplnění poznámky se neprodlouží doba zpracování žádosti Vaší objednávky."){
           $_POST['zprava'] = ""; }
    $zprava = htmlspecialchars($_POST['zprava']);
    $zprava .= "\n\n Jméno:".htmlspecialchars($_POST['jmeno']);
    $zprava .= "\n Příjmení:".htmlspecialchars($_POST['prijmeni']);
    $zprava .= "\n e-mail:".htmlspecialchars($_POST['email']);
    $zprava .= "\n ulice a čp:".htmlspecialchars($_POST['ulice']);
    $zprava .= "\n PSČ:".htmlspecialchars($_POST['psc']);
    $zprava .= "\n Telefonní číslo:".htmlspecialchars($_POST['telefon']);
    $zprava .= "\n Žádám o zboží na stránce:".htmlspecialchars($html);
     echo "$zprava";
    
  // předmět s diakritikou
  $encodedsubject = base64_encode ("Objednávka");
  $predmet = "=?utf-8?B?$encodedsubject?=";
  //nastavení mailu 
  $headers = "MIME-Version: 1.0\r\n";
  $headers.= "Content-Type: text/plain; charset=UTF-8\r\n";
  $headers.= "Content-Transfer-Encoding: 8bit\r\n";
  $headers.= "From: $email\r\n";
  

  Mail("kittlerpeta@centrum.cz", $predmet, $zprava, $headers);
  
        $zprava_p = "Potvrzujeme objednávku";
        $_POST['email'] = $email;
        $encodedsubject = base64_encode ("Potvrzení objednávky");
        $predmet_p = "=?utf-8?B?$encodedsubject?="; 
        $headers_p = "MIME-Version: 1.0\r\n";
        $headers_p.= "Content-Type: text/plain; charset=UTF-8\r\n";
        $headers_p.= "Content-Transfer-Encoding: 8bit\r\n";
        $headers_p.= "From: $email\r\n";
    Mail("$email", $predmet_p, $zprava_p, $headers_p);
  
    }

    else  
       echo 'Vrať se zpět a vyplň všechny potřebné údaje';           


                    
               
               ?>
panther
Profil
akali:
ale mail se mi pořád neodesílá:(
1. máš tam pořád jen jedno rovnítko
2. jdi po jednotlivých podmínkách, kde se ti to zasekává. Za každou si dej nějaké echo, podle toho poznáš, kam script dojde a kam už ne. Tohle je běžný postup, zkus si na chybu přijít sám (alespoň ji lokalizuj, na jakém je řádku).
akali
Profil *
Super, díky Panther.. Opět si mi pomohl.

Sice mi to chvilku trvalo, ale nějak jsem to skloubil do sebe! ;)
cubase
Profil
Dobrý den. Už nevím co mám dělat a potřeboval bych nějakého znalce s radou o pomoc. Neodesílá mi kontaktní formulář.
Kod formuláře vypadá takto:

<form action="send.php" method="post">
<div class="kText">Jméno:</div>
<div class="kInput"><input id="kJmeno" name="jmeno" accesskey="j" type="text" size="30" /></div>
<br />
<div class="kText">Email:</div>
<div class="kInput"><input id="kEmail" name="email" accesskey="e" type="text" size="30" /></div>
<br />
<div class="kText">Text:</div><div class="kInput">
<textarea id="kText" name="text" accesskey="t" rows="10" cols="60"></textarea></div>
<br />
<input type="submit" class="kBut" value="Odeslat"/>
</form>

A já bych potřeboval od nějakého experta na toto pomoct s odesílacím send.php aby to fungovalo. Je to obyčejný formulář a za každou radu budu moc vděčný.
Je těžké ho zprovoznit? Napsat kod? Snadmi někdo poradí - něž urazí :-( Děkuju
lionel messi
Profil
cubase:
A já bych potřeboval od nějakého experta na toto pomoct s odesílacím send.php aby to fungovalo.

Čo máš v send.php? Skúšal si hľadať? Podobných vláken na tomto fóre, ale i po celom internete nájdeš plno aj s hotovými riešeniami.
cubase
Profil
Hledal ale nic funkčního se mi nepodařilo nalézt. Už se mi to odesílalo, ale chodil prázdný email a pak už zase nic :-(
za každou radu a pomoc jsem moc vděčný.

V send.php je toto.

<?php
header("Content-Type: text/html; charset=utf-8");
$to = "nejaky@mail.cz";
$extra = "From: $email\r\nReply-To: $email\r\n";
$subject = "Kontakt od ".$jmeno."";
$mess = "Jméno: ".$jmeno."\nEmail: ".$email."\nText:\n".$text."";
mb_language('Neutral');
mb_internal_encoding("UTF-8");
mb_http_input("UTF-8");
mb_http_output("UTF-8");
if($jmeno==""||$text==""||ereg("^.+@.+\\..+$", $email)==false){
echo "<script>alert('Špatně zadané údaje, zkuste to prosím znovu.');</script>";
} else{
$succes = mb_send_mail($to, $subject, $mess, $extra);
if($succes){
echo "<script>alert('Zpráva byla úspěšně odeslána, děkujeme.');</script>";
}else{
echo "<script>alert('Nastala chyba, zkuste nás kontaktovat na e-mail: nejaky@mail.cz');</script>"; } }
print "<meta http-equiv=\"refresh\" content=\"0;URL=send.php\">";
exit();
?>

Moderátor juriad: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
cubase
Profil
Asi jsem absolutní neznalec :-( jeden už jsem kdysi zprovoznil, ale tento ne. Už to pomalu a jistě vzdávám. I tak děkuji

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0