inhoud txt bestand controleren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marlies Maalderink

Marlies Maalderink

04/04/2008 12:36:00
Quote Anchor link
Ik heb twee formulieren gemaakt met php, één om jezelf in te schrijven voor een nieuwsbrief en één om je weer uit te schrijven. De email adressen van degenen die zich hebben ingeschreven worden naar een txt bestand geschreven. Ik werk liever met een database, maar dat kan in dit geval niet.

Nu is het probleem als volgt. Als iemand zich uitschrijft voor de nieuwsbrief worden er een aantal voorwaarden gecontroleerd, waarna als alles goed is gegaan de melding 'unsubscribtion was succesfull' verschijnt. Er wordt echter niet gechecked of het opgegeven email adres uberhaupt wel in het txt bestand voorkomt. Dus ook als iemand een verkeerd email adres invult, dat dus helemaal niet in het txt bestand voorkomt, komt de 'succesfull' melding.

Ik moet eerlijk zeggen dat ik nog nooit eerder met txt bestanden heb gewerkt, ik heb de code van internet gehaald, wat aangepast, en van alle functies de betekenis opgezocht, hieronder het stukje code waar het om gaat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
else
{
  $handle= fopen("users.txt", "r+");
  if ($handle == false )
  {
    echo "Error opening file:use back button to try again";
  }
  else
  {
    if (flock($handle, LOCK_EX))
    { // do an exclusive lock
        
        //copy the file
        if (copy  ( "users.txt"  , "userstemp.txt"))
        {
            //rewrite original file
            rewind($handle);
            //open tempfile
            $fh2= fopen("userstemp.txt", "r");    
               while (!feof($fh2))
            {
                $buffer = fgets($fh2);
                //if buffer =  email address to delete, don't write it
                if(strcmp(rtrim($emailstl),rtrim($buffer))!=0)
                    fwrite($handle,$buffer);
                //echo "'" . $buffer . "'  '" . $_POST['email'] . "'\n";
            }            
            fflush($handle);
            ftruncate($handle, ftell($handle));

          ECho "Username: $emailstl deleted Successfully!";
          flock($handle, LOCK_UN); // release the lock
        }
        else echo "Error Copying File; Please try again.";
    }
    else
    {
      echo "Error Updating File; Use the back button to try again.";
    }
    FClose($handle);
  }
}


Ik dacht uit dit stukje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if(strcmp(rtrim($emailstl),rtrim($buffer))!=0)
                    fwrite($handle,$buffer);


op te maken dat als het email adres en de buffer niet hetzelfde zijn, er wordt geschreven. Maar ik snap niet helemaal waarom er achter dit if statement geen acties zijn geplaatst. Ik had er al dit van gemaakt (maar slaat voor de expert waarschijnlijk nergens op):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if(strcmp(rtrim($emailstl),rtrim($buffer))!=0) {
 fwrite($handle,$buffer); } else { echo "Unknown email adress"; }


Maar dat werkt niet en dan wordt ook nog eens het hele txt bestand gewist.

Weet iemand hoe ik moet checken of het email adres wel in het txt bestand voorkomt?
 
PHP hulp

PHP hulp

14/03/2025 04:05:38
 
Jacco Engel

Jacco Engel

04/04/2008 12:41:00
Quote Anchor link
http://phphulp.nl/php/scripts/1/1020/

Dan kun je als alle emails op een nieuwe regel staan gewoon alle regels uitlezen en met in_array controleren of het email adres er in staat
 
Marlies Maalderink

Marlies Maalderink

04/04/2008 12:46:00
Quote Anchor link
Dank je! Ik had alleen in de forums gezocht naar berichten over txt...

Ik ga er mee bezig.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.