Schrift
[thread]85[/thread]

OptIn Funktion für einen Newsletter: Strings finden und vergleichen



<< >> 8 Einträge, 1 Seite
cbxk1xg
 2003-10-31 14:07
#8627 #8627
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Hallo Leute!

Das ist mein erstes Posting im neuen Board und ich hoffe das wenigstens ein paar aus der alten Perl.DE community mit umgezogen sind.

Zu Sache: Ich möchte mein antikes Newsletterscript mit einem OptIn per E-Mail ausstatten. Dafür generiere ich eine Zufallszahl und schreibe diese mit der E-Mailadresse in eine temporäre Datei. - So weit so gut.

Die URL in der E-mail ruft dann das Script auf und übergibt die E-Mailadresse und die Zufallszahl. Diese beiden Werte sollen dann mit denen in der temp. Datei verglichen werden. Und genau da hakt es. Ich bekomme immer nur die Werte aus der letzten Zeile. Jedenfalls hat der String $LISTOptMail immer den Wert post@xyz.de.

Die temporäre Datei hat das folgende Format:
Code: (dl )
1
2
[EMAIL=email@domain.de]email@domain.de[/EMAIL]|123456789
[EMAIL=post@xyz.de]post@xyz.de[/EMAIL]|987654321


Hier die Sub mit dem Filehandle und der Vergleichsfunktion
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sub CheckTempDB
{
# Templist öffnen und einlesen
open (templist, "<$templist") or &error("Unable to open the templist file for reading");
if ($flock eq "y")
{flock templist, 2;}
@templist=<templist>;
close(templist);

# Templist sortieren und auf Strings rausfiltern
foreach $templist(@templist)
{
($LISTOptMail, $LISTOptID) = split (/\|/, $templist);{
$LISTOptID =~ s/\n//g; #Entfehrnt den verwi... Zeilenumbruch!
if (($LISTOptMail eq $LINKOptMail) && ($LISTOptID eq $LINKOptID)) {$OptIDStatus = "ok";}
else {$OptIDStatus = 'error';}
}
}
}
esskar
 2003-10-31 14:13
#8628 #8628
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use strict;
...
sub CheckTempDB
{
# Templist öffnen und einlesen
  open(TL, "< $templist") or &error("Unable to open the templist file for reading");
  if($flock eq "y") {flock TL, 2;}
  my @templist = <TL>;
  close(TL);

  # Templist sortieren und auf Strings rausfiltern
  foreach (@templist)
  {
     s/\r?\n//g; #Entfehrnt den verwi... Zeilenumbruch!
     my ($LISTOptMail, $LISTOptID) = split (/\|/, $_);
     {
        if(($LISTOptMail eq $LINKOptMail) && ($LISTOptID eq  $LINKOptID)) {$OptIDStatus = "ok";}
        else {$OptIDStatus = 'error';}
    }
  }
}


so ist besser...
kommt wohl davon, wenn man nicht use strict benutzt\n\n

<!--EDIT|esskar|1067603348-->
jan10001
 2003-10-31 14:24
#8629 #8629
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Mit Newslettern wäre ich etwas vorsichtig.
Siehe hier!
cbxk1xg
 2003-10-31 14:27
#8630 #8630
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Danke,
ich weiss use strict; kann extrem hilfreich sein.

Aber jetzt wird gar nichts mehr aus der Datei gelesen. Die Strings sind leer.

Und warum schreibst du "close™;" und nicht "close(TL);" ?
esskar
 2003-10-31 14:28
#8631 #8631
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
war ein vertipper...
esskar
 2003-10-31 14:30
#8632 #8632
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
dann liegt hier nicht der hund begraben...
sondern woanders
cbxk1xg
 2003-10-31 14:32
#8633 #8633
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Danke jan10001. Die Problematik ist mir bekannt. Mehr als IP-logging und einen guten Rechtsanwalt, kann man dem aber nicht entgegen setzen.

Leider wird immer noch nichts aus der Datei eingelesen und ich verstehe einfach nciht warum.
cbxk1xg
 2003-10-31 14:43
#8634 #8634
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Also bei meiner Version findet das Script nur die letzte Zeile und bei Esskars wird gar nichts gefunden?!? So langsam gehen mir die Ideen aus.
<< >> 8 Einträge, 1 Seite



View all threads created 2003-10-31 14:07.