| Autor | Zpráva | ||
|---|---|---|---|
| Akali Profil |
#1 · Zasláno: 20. 10. 2009, 21:46:05
Ahoj, měl bych prosbu o upravu scriptu na kontrolu mailu
Mám tento script
<?php
ob_start(); // cachujeme vystup
if(isset($_POST['sent'])){ // pokud byl odeslan formular pokracuj timto
$jmeno=trim($_POST['jmeno']);
$heslo1=$_POST['heslo1'];
$heslo2=$_POST['heslo2'];
$mail=trim($_POST['mail']);
$web=trim($_POST['web']);
$icq=trim($_POST['icq']);
if($jmeno=="" or $heslo1=="" or $mail==""){ // pokud nebylo vyplněno něco z toho, co je povinné, dáme vědět a skript ukončíme
$backlink="spatne_udaje_reg.php";
}else{ // povinné udaje vyplněny vsechny
require "db.php"; // pripojime se k databazi
$PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `uzivatele` WHERE `jmeno`='$jmeno' OR `mail`='$mail'"), 0);
if($PocetStejnych!=0){ // pokud v db je jiz takove jmeno nebo heslo...
$backlink="spatne_udaje_reg.php";
}elseif($heslo1 != $heslo2){ // pokud se hesla nerovnají
$backlink="spatne_udaje_reg.php";
}else{ // hesla se shoduji, vlozime tedy data do databaze
$heslo=md5($heslo1); // zahashujeme heslo
if($web=="http://" or $web==""){ //pokud nezadal web tak dame promennou web prazdnou
$web="";
}
$VlozData=mysql_query("INSERT INTO uzivatele (jmeno,heslo,mail,ip_adresa,prava,icq) VALUES ('$jmeno', '$heslo', '$mail', '$web', '0', '$icq')") or die (mysql_error());
// Vlozim do tabulky hodnoty - prvni je ID - nevyplnim, tvori se samo.
// Jako posledni hodnota je "0", to jsou ty prava uzivatele.
$backlink="reg_prijata.php"; // presmerovani s hlaskou ze je vse OK
}
}
}else{
$backlink="index.php?page=registrace&Alert=5";
}
// pokud pouzijete HEADER LOCATION tak by pred nim nemelo byt zadne platne ECHO
//echo "<a href='index.php'>index</a>";
// samozrejme zde muze byt presmerovani na jinou stranku pomoci
header ("Location: $backlink");
ob_end_flush();
?>
A potřebuju nějak udělat aby položka mail byly zkontrolována. Aby uživatel nenapsal do kolonky s mailem "na mail ti kašlu" Je tu někdo ochotnej pomoci? |
||
| Joker Profil |
#2 · Zasláno: 20. 10. 2009, 21:53:56
Návodů jak kontrolovat e-mailovou adresu je spousta.
|
||
| Akali Profil |
#3 · Zasláno: 20. 10. 2009, 21:57:05
Webů jsem prolezl spoustu. Ale žádný PHP kód se mi nepodařilo zapasovat do tohoto.
|
||
| Aesir Profil |
#4 · Zasláno: 20. 10. 2009, 22:30:12
Akali:
Můžete použít např. PHP fci filtr_var. Je tam i příklad, jak ji použít. |
||
| Medvídek Profil |
#5 · Zasláno: 20. 10. 2009, 23:15:53
Akali:
//FUNKCE PRO KONTROLU EMAILOVE ADRESY
function zkontroluj_email($email) {
$atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; // znaky tvořící uživatelské jméno
$domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // jedna komponenta domény
return eregi("^$atom+(\\.$atom+)*@($domain?\\.)+$domain\$", $email);
}
if(!zkontroluj_email($_POST["mail"])) echo "chyba";
nebo přímo
<?php
if (!eregi('^[a-z0-9_]{1}[a-z0-9\-_]*(\.[a-z0-9\-_]+)*@[a-z0-9]{1}[a-z0-9\-_]*(\.[a-z0-9\-_]+)*\.[a-z]{2,6}$', $email))
{
echo "nespravny format adresy";
}
?> |
||
| tiso Profil |
#6 · Zasláno: 21. 10. 2009, 01:36:28
Medvídek: buď taký dobrý, a miesto skopírovania funkcie od Jakuba Vránu sem uvádzaj link, alebo ju aspoň skopíruj aj s komentárom a copyright at-tagom.
|
||
| radas Profil * |
#7 · Zasláno: 21. 10. 2009, 07:37:36
no ne že bych byl pesimista,ale ja už kontrolu e-mailu "vzdal", ikdyž bude nějaka zakladni kontrola emailu na webu klient si vždy najde cestu jak jsem docilit aby se vlk nažral a koza zustala cela...a nepomohl mi format emailové adresy ani kontrola domeny...fasfad@seznam.cz a na ten mail nic nepošleš ale kontrola projde..jediné co se mi osvědčilo bylo prostě posilat na registrovany e-mail odkaz s nějakým aktivačním kodem...byl bych rad kdyby třeba poradil nějaky lepší způsob...
|
||
| Aesir Profil |
#8 · Zasláno: 21. 10. 2009, 08:25:36
Medvídek:
Pozor na to, že funkce eregi je od 5.3 označena jako deprecated. radas: „jediné co se mi osvědčilo bylo prostě posilat na registrovany e-mail odkaz s nějakým aktivačním kodem“ Je to asi nejúčinnější kontrola toho, že má schránku s danou adresou skutečně uživatel pod kontrolou. |
||
| Akali Profil |
#9 · Zasláno: 21. 10. 2009, 09:22:28
Byl by někdo ochotnej ty 2 scripta spárat do sebe, prostě mi to nejde.
mám tento HTML <form action="reg_zpracuj.php" method="post"> <input type="hidden" name="sent" value=""/> <strong><a title="Povinný údaj">Už. jméno</a></strong> <br> <input type="text" name="jmeno" maxlength="32"/>*<br><br> <strong><a title="Povinný údaj - obě hesla se musí rovnat!">Heslo</a></strong> <br> <input type="password" name="heslo1" maxlength="32"/>* <br> <br> <strong><a title="Povinný údaj - obě hesla se musí rovnat!">Heslo znovu</a> </strong><br> <input type="password" name="heslo2" maxlength="32"/>* <br> <br> <strong><a title="Povinný údaj">Email</a></strong><br> <input type="text" name="mail" value="" maxlength="64"/>*<br> <br> <strong>ICQ</strong><br> <input type="text" name="icq" value="" maxlength="64"/> <br> <br> <input type="submit" name="send" value="Registruj"/> </form> |
||
| Akali Profil |
#10 · Zasláno: 21. 10. 2009, 21:35:57
Nikdo
|
||
| AM_ Profil |
#11 · Zasláno: 21. 10. 2009, 21:39:22
Pravděpodobně ne
|
||
| Alphard Profil |
#12 · Zasláno: 21. 10. 2009, 21:52:25
Akali:
Tak do podmínky if($jmeno=="" or $heslo1=="" or $mail==""){doplňte if($jmeno=="" or $heslo1=="" or $mail=="" or !zkontroluj_email($mail)){s tím, že funkci zkontroluj_email() sem dával Medvídek (je od Jakuba Vrány). |
||
| radas Profil * |
#13 · Zasláno: 22. 10. 2009, 08:54:24
jen mi pořad neni jasne proč tam je ten hidden?
|
||
|
Časová prodleva: 3 měsíce
|
|||
| Dandim Profil * |
#14 · Zasláno: 2. 2. 2010, 21:44:14
Mám menší problém s kontrolu mailů v PHP. Na webhostingu mi to jelo OK. Po změně hostingu mi to nějak nefunguje. Mám tuto funkci:
function JeEmail ($cislo) { return filter_var($cislo, FILTER_VALIDATE_EMAIL); } Tato funkce je použita v podmínce: if(!JeEmail($_POST["email"])) $chyba["spatnyemail"]=true; Celou dobu mi to jelo, dle php.net není fce FILTER deprecated. Nevím kde je chyba. |
||
| Dandim Profil * |
#15 · Zasláno: 2. 2. 2010, 22:30:30
No mezitím jsem asi našel vysvětlení... předtím měl webhosting php 5.2 a teď na jiném je php 5.1.6.... a vypadá to tak že fce filter_var je poskytována až od verze 5.2....
|
||
|
Časová prodleva: 17 let
|
|||
0