Stránka 1 z 1

php - kontrola tvaru mailu  Vyřešeno

Napsal: 31 črc 2014 17:48
od rhsCZ
zdravím našel jsem si na netu vlastní funkci pro kontrolu tvaru mailu
a testoval jsem to vypadá to nějak takto

Kód: Vybrat vše

<?php
/** Kontrola e-mailové adresy
* @param string e-mailová adresa
* @return bool syntaktická správnost adresy
* @copyright Jakub Vrána, http://php.vrana.cz/
*/
$ema = "test@seznam.cz";
function check_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(check_mail($ema) != false)
{
echo "správně";
} else echo "špatně";
?>

zkoušel jsem to na vlastním VPS a endoře
ale vždy v prohlížeci to vrátí prázdnou stránku i po zadání jiného mailu nebo nějaké blbosti
a když to dám do základního html dokumentu mezi tagy body a samozřejmě uložím s příponou .php

Kód: Vybrat vše

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title></title>
  </head>
  <body>
<?php
/** Kontrola e-mailové adresy
* @param string e-mailová adresa
* @return bool syntaktická správnost adresy
* @copyright Jakub Vrána, http://php.vrana.cz/
*/
$ema = "test@seznam.cz";
function check_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(check_mail($ema) != false)
{
echo "správně";
} else echo "špatně";
?>
  </body>
</html>

tak mi to jak na endoře tak na vlastním VPS vyjede jen začátek dokumentu, koukal jsem se do zdrojového kódu v prohlížeci dolejšek se jakoby ztratil např. ukončení body,html, tak se ptám jestly potřebuju nějakou knihovnu/plugin pro php nainstalovat na VPS ta endora byla jen zkušební
mě to příjde jako by se funkce eregi nevyvolala a skončil dokument před vlastní funkcí a dolejšek se nedonačetl zkoušel jsem i verzi kontroly mailu s preg_match a to samé

Kód: Vybrat vše

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title></title>
  </head>
  <body>

a ještě jsem viděl kontrolu tvaru mailu takto, ale to také nefunguje

Kód: Vybrat vše

<?php
$emai = "test@seznam.cz"
if(filter_var($emai, FILTER_VALIDATE_EMAIL) == false) echo "špatně";
else echo "dobře";
?>

mohl by mi s tim někdo pomoct? díky

--- Doplnění předchozího příspěvku (31 Črc 2014 18:45) ---

nevim kde byla chyba ale toto funguje

Kód: Vybrat vše


<?php

if (!preg_match("/^[-0-9A-Z_\.]{1,50}@([-0-9A-Z_\.]+\.){1,50}([0-9A-Z]){2,4}$/i", "test@seznam.cz")) {
      echo "špatně";
   } else
{

echo "dobře";
} ?>