Anzeigenschleuder

lupadgds

Grünschnabel
Hi,
kleines Prob. Ich habe mich bei der Anzeigenschleuder als Anzeigenmarkt gemeldet. Alles funktioniert, die Anzeigen werden in eine txt-Datei auf dem Server abgelegt.
Nun die blöde Frage: Wie bekomme ich jetzt aus dieser Textdatei die Daten auf meine Anzeigenseite?
Wär schön, wenn jemand Bescheid weiß. Danke.
Gruß
Lupa
 
Um was geht es denn bei dieser Anzeigenschleuder?

Um einfach nur die TXT Datei vom Server zu holen und dann weiter zu verarbeiten kann ich dir LWP::Simple ans Herz legen:

Code:
use LWP::Simple;

my $page = get 'http://www.deineurl.de/deine.txt';

und schwupp di wupp haste die Datei in $doc vorliegen genaso wie sie aufm Server liegt.

Wenn das nicht das ist, was du willst, dann musste schon genauer erklären was du machen willst.
 
Danke

Hallo, guten Morgen!
Vielen Dank für Deine Antwort. Ich muß mal dazusagen, daß ich in mindestens 10 Foren geschrieben habe und nur Du geantwortet hast.

Als zweites, ich weiß nicht genau, ob ich das gesucht habe. Ich erklär noch mal, damit ich sicher sein kann, daß wir zwei dasselbe meinen. Also, die Daten (Anzeigen) werden von der Anzeigenschleuder auf meinen Server in eine txt-Datei importiert. Jetzt habe ich eine Homepage, auf der diese Daten (Anzeigen) angezeigt werden sollen. Also, für die User ist der Link "Anzeigen lesen" vorhanden und wenn sie dort draufklicken, sollen die Anzeigen erscheinen. Also sozusagen ein Anzeigenmarkt.

Wenn es das ist, was Du auch gemeint hast, wo schreibe ich das hin? Vor den Link?
Gruß
Lupa
 
Achso, die Daten liegen bereits auf deinem Server vor, müssen also nichtmehr von irgendwo geholt werden?

Naja, dann musst du eigentlich nur noch einen Link auf die TXT-Datei machen und schon kann man sich die ansehen.

z.b.:
Code:
<a href="http://www.meinedomain.de/mein/pfad/zur/anzeigen.txt">Anzeigen</a>

Funktioniert allerdings nur, wenn die Anzeigen.txt innerhalb des htdocs-Verzeichnisses liegt, wenn es ausserhalb liegt, musst du ein Perl-Script, oder PHP oder sonst was, verwenden, um die Datei von dort zu lesen und dann an den Benutzer weiterzuleiten.

Problem ist allerdings, das die Datei wahrscheinlich nicht besonders schön Formatiert sein wird, also wenn du die Anzeigedaten in HTML-Formatieren willst und ansehnlich präsentieren dann wird das schon etwas aufwendiger.
 
Es geht wohl wirklich eher darum, die reinen Textdaten zu parsen und in einer ansehnlichen Form präsentieren zu können.

Liege ich da richtig?

Wenn ja, wäre es ganz sinnvoll, mal ein Beispiel der Textdatei zu liefern, damit wir uns ein Bild von der zu verarbeitenden Struktur machen können.

Ob's nun unbedingt in Perl (oder vielleicht doch eine andere Sprache) sein soll, wäre auch noch interessant zu wissen.

Prinzipiell kann man wohl für jegliche Sprache sagen:

1) Datei zum Lesen öffnen
2) Datensätze (in Array) auslesen
3) (Array) mit beigefügtem HTML zur Formatierung ausgeben

Das sind zumindest die groben notwendigen Schritte.

Fluke
 
Das wär ja blöd, wenn ich so ein Script schreiben muß. Da habe ich dann echt keine Ahnung. Ich weiß auch nicht ob es im htdocs-Verzeichnis ist. Es ist im cgi-bin Verzeichnis.

Hier mal ein kurzer Auszug aus der txt-Datei wie ich es von der Anzeigenschleuder bekomme:


From test.cgi at Wed Jun 18 08:44:40 2003
Name:
Vorname:
Telefon:
PLZ:
Vorwahl:
Land-Vorwahl:
Strasse:
Stadt:
Email:
Fax:
URL:
Kategorie:
Unterkategorie:
Suchen-Bieten:
Privat-Gesch:
Anzeigenkopf:
Anzeigentext:
Nur für Erwachsene:
ID der Anzeige:
From test.cgi at Wed Jun 18 08:45:45 2003
Name: Test name
Vorname: Test vorname
Telefon: 111-1111
PLZ: 11111
Vorwahl: 49
Land-Vorwahl: 0049
Strasse: Street
Stadt: Town
Email: test@dummy.com
Fax: 111-1111
URL: http://test.dummy
Kategorie:
Unterkategorie:
Suchen-Bieten: suche
Privat-Gesch: prv
Anzeigenkopf: Anzeigenkopf
Anzeigentext: Anzeigentext
Nur für Erwachsene:
ID der Anzeige:
From test.cgi at Wed Jun 18 08:57:22 2003
Name: Raupach
Vorname: Uwe
Telefon:
PLZ:
Vorwahl:
Land-Vorwahl: 0049
Strasse:
Stadt: Wildeshausen
Email: anzeige@masters-top.de
Fax:
URL: http://
Kategorie: Vermietungen
Unterkategorie: Vermietung 4- u. Mehr-Zimmer-Wohnungen
Suchen-Bieten: Suche
Privat-Gesch: Privat
Anzeigenkopf: 3-4 Zimmer Wohnung
Anzeigentext: Ich suche fuer eine Alleinstehende Frau mit Kind eine 3 oder 4 Zimmer Wohnung in Emsteck oder CLoppenburg
Nur für Erwachsene:
ID der Anzeige:
From test.cgi at Wed Jun 18 08:58:41 2003
Name: A.
Vorname: Schmidt
Telefon:
PLZ:
Vorwahl: 02304
Land-Vorwahl: 0049
Strasse:
Stadt:
Email: info@ohne-jojo-effekt.de
Fax:
URL: http://www.fitmops.de
Kategorie: Wellness, Gesundheit
Unterkategorie: Natürlich Leben
Suchen-Bieten: Biete
Privat-Gesch: Geschäftlich
Anzeigenkopf: Gesund leben..
Anzeigentext: ..mit den natürlichen Produkten von Fitline. Testen Sie unser MoMiAb (Morgens-Mittags-Abendprogramm).
Nur für Erwachsene:
ID der Anzeige:



Ich hoffe, daß es einfach ist. Vielen Dank für Eure Hilfe. Ich bin sonst echt aufgeschmissen!
Lupa
 
Ach ja, Fluke, du liegst natürlich richtig. Welche Sprache? Keine Ahnung. Eine mit der das ganze funktioniert. Und was ist ein Array?
Lupa
 
Anzeigenschleuder und CGI

Hallo Leute:

Habe da ein kleines Problem zu lösen. Ich möchte mir gerne Anzeigen von der Anzeigenschleuder übermitteln lassen. Das ganze wird via CGI entgegengenommen, und dann in eine Textdatei geschrieben.
Dieses möchte ich aber nicht via HTML ausgeben lassen, das wäre einfach, ich möchte es DIREKT in meine Datenbank einspielen.
Die Anzeigenschleuder stellt allerdings nur EIN CGI Beispiel zur Verfügung, und verweißt mich auf eine Homepage, die dieses Script schon so modifiziert hat, das dieses funktioniert. Leider ist dieses Kostenpflichtig für 10 €.
In PHP bin ich zwar fit, aber in CGI haperts ein wenig.
Also nochmal:
Die Übermittelten Anzeigen sollen vom CGI-Script DIREKT in die Datenbank geschrieben werden.

Hier poste ich euch mal das CGI-Script, das den PRINT-Befehl ausführt in einer Textdatei:


Code:
#!/usr/bin/perl
#
use strict;
use CGI qw(:standart);
use Fcntl qw(:DEFAULT);

my $q = new CGI;

print "Content-Type: text/html\n\n";

#read input parameters
my $username    = $q->param("username");
my $firstname	= $q->param("firstname");
my $telephone   = $q->param("telephone");
my $zipcode	= $q->param("zipcode");
my $areacode	= $q->param("areacode");
my $country	= $q->param("country");
my $street	= $q->param("street");
my $town	= $q->param("town");
my $email	= $q->param("email");
my $fax		= $q->param("fax");
my $link	= $q->param("link");
my $category	= $q->param("category");
my $subcategory = $q->param("subcategory");
my $adverttype  = $q->param("adverttype");
my $busitype	= $q->param("busitype");
my $advertheader= $q->param("advertheader");
my $advertbody	= $q->param("advertbody");
my $adults_only	= $q->param("adults_only");
my $advertID	= $q->param("advertID");

# Get the current time.
my($date) = scalar(localtime());

# Append the data to a file.
open(F, ">>tester.txt");
print F "From $0 at $date\n";
#for $key (keys %CGI) {
#  print F "$key => $CGI{$key}\n";
#}
print F "Name: $username \n";
print F "Vorname: $firstname \n";
print F "Telefon: $telephone \n";
print F ": $zipcode \n";
print F "Vorwahl: $areacode \n";
print F "Land-Vorwahl: $country \n";
print F "Strasse: $street \n";
print F "Stadt: $town \n";
print F "Email: $email \n";
print F "Fax: $fax \n";
print F "URL: $link \n";
print F "Kategorie: $category \n";
print F "Unterkategorie: $subcategory \n";
print F "Suchen-Bieten: $adverttype \n";
print F "Privat-Gesch: $busitype \n";
print F "Anzeigenkopf: $advertheader \n";
print F "Anzeigentext: $advertbody \n";
print F "Nur für Erwachsene: $adults_only \n";
print F "ID der Anzeige: $advertID \n";
close(F);

print "<pre>\n";
receiveAdsImage($q);
print "</pre>\n";

exit;

#recieve and store advert image file if exist
sub receiveAdsImage {
  my($query) = @_;
  unless (defined($query->param('asimage')) && ($query->param('asimage') !~ /^\w*$/)) {
    return 1;
  } else {
    #T print $query->param('asimage')."<br>\n";
    my $file = $query->upload('asimage');
    my $fileinfo = $query->uploadInfo($file);
    my $fileext;
    #determine file name as transmitted (full path may be included)
    my $filename = getFileName($file,$query->uploadInfo($file)->{'Content-Disposition'});
    #determine file extension
    if ($filename =~ /\.(jpg|jpeg|gif|pgn)$/i) {
      $fileext = lc($1);
    } else {
      print("Falscher Typ der Bild-Datei. Nur jpeg (jpg), pgn, gif sind erlaubt.\n");
      return();
    }
    #genertate random file name
    my $fileID = generateID(10);
    #compose complete file name with random name and determined extension
    my $storeFile = "$fileID.$fileext";
    #Tprint "Size $storeFile= $filesize\n<br>";
    if (!$file && $query->cgi_error) {
      print("Fehler beim Holen der Bild-Datei im CGI.\n");
      return();
    }
    if (not sysopen FILE, "$storeFile", O_EXCL | O_CREAT | O_WRONLY, 0600) {
      print("Fehler bei der Erzeugung der Bild-Datei. ($!)\n");
      return();
    } else {
      my $buffer   = "";
      my $BUFFER_1K = 1024;
      my ($fsize,$rsize) = (0,0);
      binmode FILE;
      while (($rsize = read ($file, $buffer, $BUFFER_1K))) {
        print FILE $buffer or print("Fehler beim Schreiben der Bild-Datei. ($!)\n");
        $fsize += $rsize;
      }
      close FILE;
      print ("Store image file (name=$storeFile,size = $fsize)\n");
      return 2;
    }
  } 
}

#Used in receiveAdsImage function
sub getFileName {
  my ($cginame, $disp) = @_;
  my $name;
  if ($disp =~ /filename\=\"(.+)\"/) {
    $name = ($1);
  } else {
    $name = $cginame;
  }
  return $name;
}

#generate random string $idSize chars length
sub generateID {
  my $idSize = shift;
  $idSize = 8 if not defined($idSize);
  my @chars = ("A".."Z","a".."z",1..9);
  return join("", @chars[ map{rand @chars} (1..$idSize) ]); 
}

Hierzu die Erläuterung:
Vorgehensweise:
Bereiten Sie das CGI Script auf Ihrem Server vor, welches die Anzeigen entgegennehmen soll. Hier erhalten Sie einen Beispiel-Source-Code für ein solches CGI. Kopieren Sie dies in ein Cgi-File in Ihrem cgi-Verzeichniss auf Ihrem server (z.B. mit dem Namen test.cgi). Vergeben Sie die Zugriffsrechte rwxr-xr-x . Erzeugen Sie dann noch in dem selben Verzeichniss ein File mit dem Namen tester.txt . Zugriffsrechte: rwxrwxrwx. Wenn Sie möchten, bauen Sie später das CGI nach Ihren Wünschen um.
Testen Sie Ihr CGI (siehe unten). Geben Sie dazu die URL des CGI's auf Ihrem server unten ein plus ein paar Testdaten. Nach erfolgreicher Übermittlung sind die Daten im File tester.txt auf Ihrem server zu finden.

Jetzt sollen diese Daten nicht in auf einer HTML Seite erscheinen, sondern in meiner Datenbank.
Wie bekomme ich das CGI-Script dazu, dieses mir in meine Datenbank in die dafür vorgesehenden Tabellen schreibt.

Danke, euer YellowZapp :rolleyes:
 
Re: Anzeigenschleuder und CGI

Hallo und guten Morgen,

da ich leider genau das gleiche Problem habe (und leider noch keine Lösung dazu gefunden; habe schon X-Sachen versucht) möchte ich nachragen,
ob schon etwas gefunden worden ist.

Auch ich möchte direkt die Daten von der Anzeigenschleuder (welche ja in die Datei "tester.txt" übermittelt werden) sirekt in meine Datenbank umleiten.

Ich würde mich freuen wenn mir hier einer Hilfe anbieten könnte.

Mit allerbestem Dank im vorraus!



Original geschrieben von YellowZapp
Hallo Leute:

Habe da ein kleines Problem zu lösen. Ich möchte mir gerne Anzeigen von der Anzeigenschleuder übermitteln lassen. Das ganze wird via CGI entgegengenommen, und dann in eine Textdatei geschrieben.
Dieses möchte ich aber nicht via HTML ausgeben lassen, das wäre einfach, ich möchte es DIREKT in meine Datenbank einspielen.
Die Anzeigenschleuder stellt allerdings nur EIN CGI Beispiel zur Verfügung, und verweißt mich auf eine Homepage, die dieses Script schon so modifiziert hat, das dieses funktioniert. Leider ist dieses Kostenpflichtig für 10 €.
In PHP bin ich zwar fit, aber in CGI haperts ein wenig.
Also nochmal:
Die Übermittelten Anzeigen sollen vom CGI-Script DIREKT in die Datenbank geschrieben werden.

Hier poste ich euch mal das CGI-Script, das den PRINT-Befehl ausführt in einer Textdatei:


Code:
#!/usr/bin/perl
#
use strict;
use CGI qw(:standart);
use Fcntl qw(:DEFAULT);

my $q = new CGI;

print "Content-Type: text/html\n\n";

#read input parameters
my $username    = $q->param("username");
my $firstname	= $q->param("firstname");
my $telephone   = $q->param("telephone");
my $zipcode	= $q->param("zipcode");
my $areacode	= $q->param("areacode");
my $country	= $q->param("country");
my $street	= $q->param("street");
my $town	= $q->param("town");
my $email	= $q->param("email");
my $fax		= $q->param("fax");
my $link	= $q->param("link");
my $category	= $q->param("category");
my $subcategory = $q->param("subcategory");
my $adverttype  = $q->param("adverttype");
my $busitype	= $q->param("busitype");
my $advertheader= $q->param("advertheader");
my $advertbody	= $q->param("advertbody");
my $adults_only	= $q->param("adults_only");
my $advertID	= $q->param("advertID");

# Get the current time.
my($date) = scalar(localtime());

# Append the data to a file.
open(F, ">>tester.txt");
print F "From $0 at $date\n";
#for $key (keys %CGI) {
#  print F "$key => $CGI{$key}\n";
#}
print F "Name: $username \n";
print F "Vorname: $firstname \n";
print F "Telefon: $telephone \n";
print F ": $zipcode \n";
print F "Vorwahl: $areacode \n";
print F "Land-Vorwahl: $country \n";
print F "Strasse: $street \n";
print F "Stadt: $town \n";
print F "Email: $email \n";
print F "Fax: $fax \n";
print F "URL: $link \n";
print F "Kategorie: $category \n";
print F "Unterkategorie: $subcategory \n";
print F "Suchen-Bieten: $adverttype \n";
print F "Privat-Gesch: $busitype \n";
print F "Anzeigenkopf: $advertheader \n";
print F "Anzeigentext: $advertbody \n";
print F "Nur für Erwachsene: $adults_only \n";
print F "ID der Anzeige: $advertID \n";
close(F);

print "<pre>\n";
receiveAdsImage($q);
print "</pre>\n";

exit;

#recieve and store advert image file if exist
sub receiveAdsImage {
  my($query) = @_;
  unless (defined($query->param('asimage')) && ($query->param('asimage') !~ /^\w*$/)) {
    return 1;
  } else {
    #T print $query->param('asimage')."<br>\n";
    my $file = $query->upload('asimage');
    my $fileinfo = $query->uploadInfo($file);
    my $fileext;
    #determine file name as transmitted (full path may be included)
    my $filename = getFileName($file,$query->uploadInfo($file)->{'Content-Disposition'});
    #determine file extension
    if ($filename =~ /\.(jpg|jpeg|gif|pgn)$/i) {
      $fileext = lc($1);
    } else {
      print("Falscher Typ der Bild-Datei. Nur jpeg (jpg), pgn, gif sind erlaubt.\n");
      return();
    }
    #genertate random file name
    my $fileID = generateID(10);
    #compose complete file name with random name and determined extension
    my $storeFile = "$fileID.$fileext";
    #Tprint "Size $storeFile= $filesize\n<br>";
    if (!$file && $query->cgi_error) {
      print("Fehler beim Holen der Bild-Datei im CGI.\n");
      return();
    }
    if (not sysopen FILE, "$storeFile", O_EXCL | O_CREAT | O_WRONLY, 0600) {
      print("Fehler bei der Erzeugung der Bild-Datei. ($!)\n");
      return();
    } else {
      my $buffer   = "";
      my $BUFFER_1K = 1024;
      my ($fsize,$rsize) = (0,0);
      binmode FILE;
      while (($rsize = read ($file, $buffer, $BUFFER_1K))) {
        print FILE $buffer or print("Fehler beim Schreiben der Bild-Datei. ($!)\n");
        $fsize += $rsize;
      }
      close FILE;
      print ("Store image file (name=$storeFile,size = $fsize)\n");
      return 2;
    }
  } 
}

#Used in receiveAdsImage function
sub getFileName {
  my ($cginame, $disp) = @_;
  my $name;
  if ($disp =~ /filename\=\"(.+)\"/) {
    $name = ($1);
  } else {
    $name = $cginame;
  }
  return $name;
}

#generate random string $idSize chars length
sub generateID {
  my $idSize = shift;
  $idSize = 8 if not defined($idSize);
  my @chars = ("A".."Z","a".."z",1..9);
  return join("", @chars[ map{rand @chars} (1..$idSize) ]); 
}


Hierzu die Erläuterung:


Jetzt sollen diese Daten nicht in auf einer HTML Seite erscheinen, sondern in meiner Datenbank.
Wie bekomme ich das CGI-Script dazu, dieses mir in meine Datenbank in die dafür vorgesehenden Tabellen schreibt.

Danke, euer YellowZapp :rolleyes:
 
CGI und Anzeigenschleuder

Wenn du möchtest, sende ich Dir die PHP-Dateien zu. Dauert nur etwas, weil mom. wenig Zeit.

Habe da eine Lösung gefunden. Lasse mir von der Anzeigenschleuder die Daten in eine Text-Datei schreiben, und packe mit einem Aufruf einer php-Seite alle Daten in eine Datenbank, und das geht.
Ist zwar noch in der Testphase, aber das wird werden. Kannst ja ein bischen damit rumbasteln.

Wenn du eine bessere Lösung gefunden hast, können wir ja die Daten austauschen. Würde mich freuen.

Sende mir eine e-Mail an : info@yellowzapp.de.

Ich sende Dir dann die Daten in eier .rar oder .zip. Wie du gerne möchtest.

Bis später.....

YellowZapp
 

Neue Beiträge

Zurück