Sprawdzanie baz e-mail

0

Witam chciałbym stworzyć skrypt który by sprawdzał e-mail pod kątem domen i poprawności składni. Tylko bazy mam zapisane w pliku txt, napisałem skrypt ale po wrzuceniu na serwer nie działa.Chodzi mi głównie o to że ja wrzucając bazę na serwer do folderu gdzie mam skrypt chce go uruchamiać ręcznie a on ma robić swoje.

 
<?php





$plik = "db.txt";

$dane = file($plik); 

for($i=0;$i<count($dane);$i++) { 
  $dane[$i]=$email;

$sprawdz = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';

if(ereg($sprawdz, $email)){
echo "Gitara e-mail";

  $nazwa_pliku = "przefiltrowana.txt";

if (is_writeable($nazwa_pliku))
  {
   if ($plik = fopen($nazwa_pliku, "a"))
     {
      if (fwrite($plik, "Linia pierwsza"."
"."Linia druga") !== FALSE) echo "Zapis do pliku zakończył się powodzeniem...";
        else echo "Zapis do pliku się nie powiódł...";

      fclose($plik);

     } else echo "Nie mogę nawiązać połączenia z plikiem...";

  } else echo "Do pliku nie można dopisać informacji lub on nie istnieje..."
  ;}
else{
  echo 'Adres e-mail nieprawidłowy';

}}



?>
0
  1. Zdefiniuj "nie działa". Znaczy co się dzieje?
    Wydaje mi się, że problemem jest fakt, że nadpisujesz $dane[$i]=$email;, czyli zmieniasz mail z pliku na zmienną $email, której wartość jest nieustalona w tym momencie. Czy nie powinno być dokładnie odwrotnie - $email = $dane[$i]?
  2. Wyrzuć ereg, używaj funkcji z rodziny preg_*;
  3. Twoje wyrażenie regularne jest błędne, bo odrzuca choćby TLD .travel i .museum, a na świecie kolejnych TLD będzie dłuższych niż 4 znaki coraz więcej.
0

Na którym kroku się zawiesza? zapewne na is_writeable? To zmień uprawnienia pliku, żeby dało się zapisywać.

Pomóż nam trochę

0
<?php

function sprawdzanie($email) {
 if(preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)){
  list($username,$domain)=split('@',$email);
  if(!checkdnsrr($domain,'MX')) {
   return false;
  }
  return true;
 }
 return false;
}



$plik = "db.txt";

$dane = file($plik); 

for($i=0;$i<count($dane);$i++) { 
  $email=$dane[$i];
sprawdzanie($email);
if(sprawdzanie($email)==TRUE){

 $nazwa_pliku = "przefiltrowana.txt";

if (is_writeable($nazwa_pliku))
  {
   if ($plik = fopen($nazwa_pliku, "a"))
     {
      if (fwrite($plik, $email) !== FALSE) echo "Zapis do pliku zakończył się powodzeniem...";
        else echo "Zapis do pliku się nie powiódł...";

      fclose($plik);

     } else echo "Nie mogę nawiązać połączenia z plikiem...";

  } else echo "Do pliku nie można dopisać informacji lub on nie istnieje..."
  l';}
else{
  echo 'Adres e-mail nieprawidłowy';

}}



?> 

Jest ok pod względem składni?

0

Szybciej mi było poprawić parę rzeczy niż je wskazywać :) poza tym funkcja split jest deprecated, zalecałbym chyba użycie explode

<?php

/**
 * Funkcja sprawdza czy email jest poprawny.
 * 
 * @param string $email Adres email.
 * 
 * @return boolean Jeśli email jest poprawny zwraca true
 */
function isEmailCorrect($email)
{
    if (preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/", $email)) {
        list($username, $domain) = split('@', $email);
        return checkdnsrr($domain, 'MX');
    }
    return false;
}

$file = 'db.txt';
$emailList = file($file);
$emailCount = count($emailList);
for ($i = 0; $i < $emailCount; $i++) {
    $email = $emailList[$i];
    if (isEmailCorrect($email)) {
        $newFileName = 'przefiltrowana.txt';
        if (is_writeable($newFileName)) {
            if ($file = fopen($newFileName, 'a')) {
                if (fwrite($file, $email) !== false) {
                    $msg = 'Zapis do pliku zakończył się powodzeniem...';
                } else {
                    $msg = 'Zapis do pliku się nie powiódł...';
                }
                fclose($file);
            } else {
                $msg = 'Nie mogę nawiązać połączenia z plikiem...';
            }
        } else {
            $msg = 'Do pliku nie można dopisać informacji lub on nie istnieje...';
        }
    } else {
        $msg = 'Adres e-mail nieprawidłowy';
    }
    echo $msg;
}
0

trochę razi ciągłe otwieranie i zamykanie pliku (wew pętli)

1 użytkowników online, w tym zalogowanych: 0, gości: 1