Autor Zpráva
pepi3
Profil
čaute pomůžete mi potřebuju formulář na registraci do závodu...sem lama moc to neumím...prostě nevím proč to nefunguje...+ ještě bych potřeboval poslat jakoby další email, který pošle tomu který se registruje mail že je jakože zaregistrovaný at pošle peníze na účet blabla....dík
<?php
$number = "$_SERVER[REMOTE_ADDR]";
$datum = Date("j.m.Y H:i:s", Time());

$jmeno=$_REQUEST['jmeno'];
$adresa=$_REQUEST['adresa'];
$kategorie=$_REQUEST['kategorie'];
$mobil=$_REQUEST['mobil'];
$mail=$_REQUEST['mail'];
$cislocipu=$_REQUEST['cislocipu'];
$vzkaz=$_REQUEST['vzkaz'];
$send=$_REQUEST['send'];

if ($mail==""){
$mail="";
}
$form="<form method=\"post\" action=\"$php_self\">
<table border=\"0\" cellpadding=\"1\" cellspacing=\"0\">
<tr>
<td width=\"110px\">Příjmení a jméno:</td>
<td><input size=\"30\" type=\"text\" name=\"jmeno\" maxlength=\"100\" value=\"$jmeno\" /><span style=\"color:red\">*</span></td>
</tr>
<tr>
<td>Adresa:</td>
<td><input size=\"30\" type=\"text\" name=\"adresa\" maxlength=\"100\" value=\"$adresa\" /></td>
</tr>
<tr>
<td>Kategorie:</td>
<td><select name=\"kategorie\" value=\"$kategorie\">
    <option value=\"M\">Muž</option>
    <option value=\"M+\">Muž nad 40 let</option>
    <option value=\"Z\">Žena</option>
    <option value=\"Z+\">Žena nad 40 let</option>
    <option value=\"M+M\">Dvojice M+M</option>
    <option value=\"Z+M\">Dvojice Ž+M</option>
    <option value=\"Z+Z\">Dvojice Ž+Ž</option>
    </select> <span style=\"color:red\">*</span>
</td>
</tr>
<tr>
<td>Telefon (606123456):</td>
<td><input size=\"30\" type=\"text\" name=\"mobil\" maxlength=\"9\" value=\"$mobil\" /><span style=\"color:red\">*</span></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input size=\"30\" type=\"text\" name=\"mail\" maxlength=\"100\" value=\"$mail\" /><span style=\"color:red\">*</span></td>
</tr>
<tr>
<td>Číslo čipu+:</td>
<td><input size=\"30\" type=\"text\" name=\"cislocipu\" maxlength=\"15\" value=\"$cislocipu\" /></td>
</tr>
<tr>
<td>Vzkaz:</td>
<td><textarea name=\"vzkaz\" rows=\"4\" cols=\"35\">$vzkaz</textarea></td>
</tr>
<tr>
<td></td>
<td><input type=\"hidden\" name=\"send\" value=\"submited\" /><input type=\"submit\" value=\" Registorvat \" /></td>
</tr>
</table>
</form>";

$jmeno_error=0;
$adresa_error=0;
$kategorie_error=0;
$mail_error=0;
$mobil_error=0;
 
if ($send!="submited"){
echo "$form";
}else{
 
        if ((empty($jmeno)) OR (empty($kategorie)) OR (@!strpos ($mail,"@")) OR (@!strpos ($mail,".")) OR (empty($mobil))){
        echo "<span style=\"color:red;\"><strong>Prosím vyplňte všechny požadované položky.</strong></span><br />";
        $jmeno_error=1;
        }
        if(preg_match('/^([0-9]+)$/', $mobil)) {echo "<span style=\"color:red;\"><strong>Prosím zadejte váš telefon.</strong></span><br />";
        $mobil_error=1;
        }
        if (($jmeno_error) || ($kategorie_error) || ($mail_error) || ($mobil_error)){
        echo "$form";
        }else{
        $zprava1="Nový závodník
============================================
Datum a čas odeslání: $datum               
Adresa IP:            $number


------------V. Valašský orieňťák - Registrace---------

Příjmení a jméno: $jmeno
Adresa: $adresa
Kategorie: $kategorie
E-mail: $mail
Telefon: $mobil
Číslo čipu SI+: $cislocipu

Vzkaz: $vzkaz";
        $predmet="Registrace $jmeno";
        $komu="dzouzef@seznam.cz";
        $od="ohlaklika@ohlaklika.com";
        mail ($komu,$predmet,$zprava1,"Content-Type: text/plain; charset=utf-8\nReply-To: $od\nFrom: $od");
        $zprava2="Děkujeme za registraci! Po zaplacení startovného na účet 214872525/0300 Vám bude zaslán potvrzovací e-mail.";
        $to="$mail";
        mail ($to,$predmet,$zprava2,"Content-Type: text/plain; charset=utf-8\nReply-To: $od\nFrom: $od");
        echo "<span style=\"color:green;\">Registrace byla úspěšná.</span>";
        }
}
?>
SwimX
Profil
pepi3:
buď napiš co ti nejde, nebo řekni cenu. 100řádek jen tak řešit nikdo nebude..
pepi3
Profil
prostě mi nejde odeslat
SwimX
Profil
pepi3:
kde to zkoušíš?
pepi3
Profil
SwimX
Tu
SpotRudloff
Profil *
A ve formuláři místo odeslání nastavit z $php_self třeba na zpracovani_formulare.php?
Davex
Profil
A kde nastavuješ proměnnou $send?
pepi3
Profil
jo to bylo tím $send. dík, ale eště bych potřeboval poradit že vlastně když tam něco nevyplním tak to se stejně odešle aj když to je nevyplněné a ještě že vlastně třeba ragistrace byla potvrzena se mi zobrazí na další stránce a potřeboval bych to pod tím, nebo jako script....(aktualizoval jsem kod nahoře)
SpotRudloff
Profil *
<?php
if(!IsSet($jmeno) OR !IsSet($adresa)){ //pokračuj v porměnných, které musí výt vyplněny dle návodu...
die("Nelze odeslat, jelikož nejsou vyplněny všechny údaje!");
}
?>
pepi3
Profil
to nefunguje
AM_
Profil
Jistěže to nefunguje, když to dáš na začátek je to závislé na register globals, i po opravě $jmeno a $adresa budou nastavené vždy. Správně je if(empty(...
Jinak k pro uživatele pohodlnější a přehlednější validaci můžeš použít třeba tigra form validator
SpotRudloff
Profil *
Předělej echo u podmínky, kterou máš při kontrole, zda je vše vyplněno na die.
pepi3
Profil
prosím ještě jednu radu...potřebuju udělat aby do kolonky telefon nešlo dát písmeno nebo, aby když to odešlu se to neodeslalo (kód navrchu zaktualizovaný)
AM_
Profil
pepi3:
použij validátor viz [#11] - zabrání odeslání formuláře, pokud některé z polí není validní. Dneska má javascript skoro každý, pokud to neoptimalizuješ např. pro mobily tak to stačí, na straně PHP pak stačí jednoduše neplatný telefon detekovat regulárem. Chvíli to chce na nastudování toho validátoru, ale za ten luxus to docela stojí.
Regulár pro čísla:
//edit: Majkl578 má pravdu, dík za upozornění, opraveno
if (!preg_match('/^\\+?[0-9 ]+$/', $telefon)){
  die('telefon muze obsahovat pouze cisla/mezery/+!');
}

Pozor, přidal jsem tam schválně mezeru - spousta lidí zadává telefon s mezerou - a mezinárodní předvolba může obsahovat +.
Majkl578
Profil
[#14] AM_:
Správně by měl být takto:
if (!preg_match('~^\+?[\d ]+$~', $telefon)) {
  die('telefon muze obsahovat pouze cisla/mezery/+!');
}
Měl jsi + na špatném místě. Ideální by ještě bylo omezení délky a kontrola, zda nebylo zadáno např: "+     ".
pepi3
Profil
jo už to fachá...dík moc ogárci...:)

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