Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: string aus datei vergleichen

  1. #1
    micha75
    Gast

    Standard string aus datei vergleichen

    hallo zusammen,

    ich versuche $id aus einer txt datei zu vergleiche, aber das klappt bei mir nicht.
    im augenblick funktioniert es so bei mir:
    Code:
    if ($id !== "1" && $id !== "2" && $id !== "3") die("id not used!");
    ich möchte aber, wenn die $id in der txt datei nicht vorhanden ist, dass script beendet wird, mit einer fehlermeldung.

    kann mir da jemand bei weiter helfen?

    mfg: micha
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    if ($id <1 || $id>3)
    die("id not used!");

    währe die einfachere Lösung.

    aber die frage ist jetzt, wenn das ganze nicht beendet wird, wie ist dann die id ?! mach doch einfach ne debug Ausgabe.

  3. #3
    Youngster
    Registriert seit
    11.06.2007
    Beiträge
    15
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hallo GreenRover,

    erst mal danke für deine Bemühung, aber ich wollte das die Übergebende ID auch Tatsächlich in data.txt steht. Ist dies nicht der Fall, dann Abbruch mit Fehlermeldung.

    So sieht der Auszug aus meinem Script zum einlesen des Counters bis jetzt aus:
    Code:
    $id = isset&#40;$_GET&#91;"id"&#93;&#41; ? $_GET&#91;"id"&#93; &#58; "";
    if &#40;preg_match&#40;"/&#91;^0-9&#93;+/",$id&#41;&#41; die&#40;"Hacking attempt!"&#41;;
    if &#40;$id <1 || $id>3&#41; die&#40;"ID&#58; $id not used!"&#41;;
    
    $dbfile = "data.txt";
    $basedir = "/srv/www/htdocs/web/files/";
    
    $dat = fopen&#40;$dbfile, "r"&#41;;
    while&#40;$array = fgetcsv&#40;$dat, 1000, "|"&#41;&#41;
    &#123;
    	if&#40;$array&#91;0&#93; == $id&#41;
    	&#123;
    		$switch = $array&#91;1&#93;;
    		$digit = $array&#91;2&#93;;
    		$digit++;
    	&#125;
    	else
    	&#123;
    		$erg&#91;&#93; = "$array&#91;0&#93;|$array&#91;1&#93;|$array&#91;2&#93;\n";
    	&#125;
    &#125;
    fclose&#40;$dat&#41;;
    wissen ist macht, nichts wissen macht auch nichts...

  4. #4
    Youngster
    Registriert seit
    11.06.2007
    Beiträge
    15
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Code:
    <?
    error_reporting&#40;E_ALL&#41;;
    
    $id = isset&#40;$_GET&#91;"id"&#93;&#41; ? $_GET&#91;"id"&#93; &#58; "";
    if &#40;preg_match&#40;"/&#91;^0-9&#93;+/",$id&#41;&#41; die&#40;"Hacking attempt!"&#41;;
    if &#40;$id <1 || $id>3&#41; die&#40;"ID&#58; $id not used!"&#41;;
    
    $dbfile = "data.txt";
    $basedir = "/srv/www/htdocs/web/files/";
    
    $dat = fopen&#40;$dbfile, "r"&#41;;
    while&#40;$array = fgetcsv&#40;$dat, 1000, "|"&#41;&#41;
    &#123;
    	if&#40;$array&#91;0&#93; == $id&#41;
    	&#123;
    		$switch = $array&#91;1&#93;;
    		$digit = $array&#91;2&#93;;
    		$digit++;
    	&#125;
    	else
    	&#123;
    		$erg&#91;&#93; = "$array&#91;0&#93;|$array&#91;1&#93;|$array&#91;2&#93;\n";
    	&#125;
    &#125;
    fclose&#40;$dat&#41;;
    
    $dat = fopen&#40;$dbfile, "w"&#41;;
    fputs&#40;$dat, "$id|$switch|$digit\n"&#41;;
    $count = 0;
    while&#40;$erg&#91;$count&#93; != ""&#41; // Notice&#58; Undefined offset&#58; 2 in /srv/www/htdocs/web/html/download.php on line 30
    &#123;
    	fputs&#40;$dat, $erg&#91;$count&#93;&#41;;
    	$count++;
    &#125;
    fclose&#40;$dat&#41;;
    
    // exit script for error_reporting&#40;E_ALL&#41;;
    exit;
    
    $filename = sprintf&#40;"%s/%s", $basedir, $switch&#41;;
    header&#40;"Content-Type&#58; application/octet-stream"&#41;;
    $savename = basename&#40;$switch&#41;;
    header&#40;"Content-Disposition&#58; attachment; filename=\"$savename\""&#41;;
    readfile&#40;$filename&#41;;
    ?>
    Habe den debugg Modus aktiviert und im Script ein Kommentar geschrieben. Was kann ich tun, um dieses Script zu Perfektionieren?

    Habe dieses Script mehr oder weniger zusammen gestellt, aus verschiedenen Tuts und Script snippets.

    Mein Behühen ist, dass dieses Script sicher und Korrekt Funktioniert.
    wissen ist macht, nichts wissen macht auch nichts...

  5. #5
    König(in) Avatar von d4f
    Registriert seit
    22.04.2007
    Ort
    Luxemburg
    Beiträge
    1.493
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    ich wuerde z.B.
    Code:
    if &#40;preg_match&#40;"/&#91;^0-9&#93;+/",$id&#41;&#41; die&#40;"Hacking attempt!"&#41;;
    durch
    Code:
    if&#40;!is_numeric&#40;$id&#41;&#41; die&#40;"Hacking attempt!"&#41;;
    ersetzen. Ist allerdings nur eine Schoenheitsoperation.

    Sicher ist es, da es keine unkontrollierten Eingaben hat, und man mit Ziffern hoechstens die RAM fuellen kann ^^

    Um gegen jeden GAU gesichert zu sein, kann man noch die eine oder andere Zusatzfunktion einbauen, was allerdings nicht notwendig ist.
    Wir sind alle ein BOFH:

  6. #6
    Youngster
    Registriert seit
    11.06.2007
    Beiträge
    15
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    hi d4f,

    danke für den Tipp, hast du denn eine Idee wie ich das Realisieren kann? Das die ID in:
    Code:
    $dbfile = "data.txt";
    vor dem Download abgefragt wird? Im Moment wird die ID so abgefragt:
    Code:
    if &#40;$id <1 || $id>3&#41; die&#40;"ID&#58; $id not used!"&#41;;
    wissen ist macht, nichts wissen macht auch nichts...

  7. #7
    König(in) Avatar von d4f
    Registriert seit
    22.04.2007
    Ort
    Luxemburg
    Beiträge
    1.493
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    ich verstehe jetzt nicht genau was du meinst?
    Wie vor dem Download? Das Script wird doch komplett vor dem Download geladen oder nicht? *confused*
    Wir sind alle ein BOFH:

  8. #8
    Youngster
    Registriert seit
    11.06.2007
    Beiträge
    15
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hi d4f,

    In der data.txt steht:
    Code:
    1|datei.exe|0
    2|datei2.exe|0
    3|datei3.exe|0
    Rufe ich eine ID 4 auf, wird eine neue Zeile in data.txt geschrieben:
    Code:
    ||
    Es soll aber keine neue Zeile geschrieben werden, sonderen vorher geprüft werden, ob diese ID in der data.txt vor kommt, wenn nicht? Dann Fehlermeldung wie bei:
    Code:
    if &#40;$id <1 || $id>3&#41; die&#40;"ID&#58; $id not used!"&#41;;
    Ich möchte nicht immer diese Zeile neu anpassen, wenn ich einen download hinzufüge.

    P.S. Das Script sollte ohne diese ^^ Zeile die ID prüfen.
    wissen ist macht, nichts wissen macht auch nichts...

  9. #9
    König(in) Avatar von d4f
    Registriert seit
    22.04.2007
    Ort
    Luxemburg
    Beiträge
    1.493
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    so?
    Code:
    $dat = fopen&#40;$dbfile, "r"&#41;;
    $found = false;
    if&#40;!dat&#41; die&#40;'&#91;SYSTEMFEHLER&#93;'&#41;;
    while&#40;!feof&#40;$dat&#41; &#123;
      $line = fgets&#40;$dat&#41;;
      $line = explode&#40;'|', $line&#41;;
      if&#40;$line&#91;0&#93; == $_GET&#91;'id'&#93;&#41; $found = true;
    &#125;
    if&#40;!$found&#41; die&#40;'ID exisitert nicht'&#41;;
    Wir sind alle ein BOFH:

  10. #10
    Youngster
    Registriert seit
    11.06.2007
    Beiträge
    15
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hi d4f,

    Jaaaaaaaaaaaaaaaaa!

    Es Funktioniert, vielen Dank für deine Mühe, habe es nun so gemacht:
    Code:
    include&#40;"session.inc.php"&#41;;
    
    $id = isset&#40;$_GET&#91;"id"&#93;&#41; ? $_GET&#91;"id"&#93; &#58; "";
    if&#40;!is_numeric&#40;$id&#41; || $id>100&#41; die&#40;"Hacking attempt!"&#41;;
    
    $dbfile = "data.txt";
    $basedir = "/srv/www/htdocs/web/files/";
    
    $dat = fopen&#40;$dbfile, "r"&#41;;
    $found = false;
    while&#40;!feof&#40;$dat&#41;&#41; &#123;
      $line = fgets&#40;$dat&#41;;
      $line = explode&#40;"|", $line&#41;;
      if&#40;$line&#91;0&#93; == $id&#41; $found = true;
    &#125;
    if&#40;!$found&#41; die&#40;"ID&#58; $id not used!"&#41;;
    fclose&#40;$dat&#41;;
    
    $dat = fopen&#40;$dbfile, "r"&#41;;
    while&#40;$line = fgetcsv&#40;$dat, 1000, "|"&#41;&#41;
    &#123;
    	if&#40;$line&#91;0&#93; == $id&#41;
    	&#123;
    		$switch = $line&#91;1&#93;;
    		$digit = $line&#91;2&#93;;
    		$digit++;
    	&#125;
    	else
    	&#123;
    		$erg&#91;&#93; = "$line&#91;0&#93;|$line&#91;1&#93;|$line&#91;2&#93;\n";
    	&#125;
    &#125;
    fclose&#40;$dat&#41;;
    
    $dat = fopen&#40;$dbfile, "w"&#41;;
    fputs&#40;$dat, "$id|$switch|$digit\n"&#41;;
    $count = 0;
    while&#40;$erg&#91;$count&#93; != ""&#41;
    &#123;
    	fputs&#40;$dat, $erg&#91;$count&#93;&#41;;
    	$count++;
    &#125;
    fclose&#40;$dat&#41;;
    
    $filename = sprintf&#40;"%s/%s", $basedir, $switch&#41;;
    header&#40;"Content-Type&#58; application/octet-stream"&#41;;
    $savename = basename&#40;$switch&#41;;
    header&#40;"Content-Disposition&#58; attachment; filename=\"$savename\""&#41;;
    readfile&#40;$filename&#41;;
    Ein paar Fragen habe ich aber noch, muß denn 3-Mal fopen() in dem Script vorkommen? Oder lässt es sich mit einem fopen() und fclose() bewerkstelligen.

    Und warum zuvor die Datei im Read Modus öffnen? Denn eigentlich sollte ja nur geschrieben werden (Downloads).

    Warum kommt diese Meldung: "Notice: Undefined offset: 2" wenn das Script im Debug Modus läuft?

    Codezeile, die die Meldung verursacht:
    Code:
    while&#40;$erg&#91;$count&#93; != ""&#41;
    wissen ist macht, nichts wissen macht auch nichts...

Ähnliche Themen

  1. Arrayinhalt vergleichen
    Von Jessica Heinze im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 24.09.2007, 21:27
  2. Vergleichen
    Von Jochen im Forum HTML & CSS Forum
    Antworten: 5
    Letzter Beitrag: 21.11.2006, 22:32
  3. Array vergleichen
    Von kasi im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 13.06.2006, 16:22
  4. mit eintrag in txt datei vergleichen
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 12.06.2006, 18:55
  5. variablen vergleichen
    Von Steffi im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 27.11.2005, 12:40

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •