problem mit imagecode

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • problem mit imagecode

    hi!
    bin leider ziemlicher Neuling was PHP angeht aber bisher hab ich noch immer alle Vorlagen so umwandeln können das sie bei mir laufen ... aber hier komm ich nicht weiter. hoffe jemand kann mir helfen. also:

    ich hab drei files:

    1. Das Formular

    PHP-Quellcode

    1. <?php
    2. // Zufallsgenerator starten. Erzeugt den Dateinamen
    3. mt_srand((double)microtime()*1000000);
    4. $iRandFileVal = mt_rand(1000000, 9999999);
    5. // Dann das HTML Formular
    6. ?>
    7. <form name="input" method="post" action="check.php<?php echo "?iCode=".$iRandFileVal; ?>">
    8. <!-- Hier kommt der Rest deines Formulars -->
    9. <!-- und hier das Feld mit dem Postcode und dem Bild -->
    10. <td>Postcode: </td>
    11. <td><input type="text" maxlength="6" name="imgCode">
    12. <img src="image.php<?php echo '?iCode='.$iRandFileVal;
    13. // Die Bilderzeugungsdatei wird aufgerufen
    14. // der Parameter ist wieder der Dateiname
    15. ?>"><input type="submit" value="Formular abschicken" name="Submit"> </td>
    16. </form>
    17. <!-- Weiterer HTML/PHP Code -->
    Alles anzeigen


    2. die Datei die Das Bild erstellt

    PHP-Quellcode

    1. <?php
    2. // Zufallsgenerator starten
    3. // erzeugt den Postcode der dann auf das Bild kommt
    4. mt_srand((double)microtime()*1000000);
    5. $iRandVal = mt_rand(100000,999999);
    6. // Neue Datei im Unterverzeichnis /codes anlegen
    7. // der Dateiname wurde in der Datei insert.php erzeugt
    8. $fp = fopen("codes/".$_GET['iCode'].".hsp","w") or die("error");
    9. // den verschluesselten Bildercode in die Datei schreiben
    10. fwrite($fp, md5($iRandVal), 1024);
    11. // CHMOD setzen, um die Datei später öffnen/löschen zu können
    12. chmod("codes/".$_GET['iCode'].".hsp", 0777) or die("error in setting chmod");
    13. fclose($fp);
    14. // Bild erzeugen und ausgeben
    15. header ("Content-type: image/png");
    16. // 56,16 ist die Groesse in Pixel
    17. $im = imagecreate (56,16) or die("Cannot Initialize new GD image stream");
    18. // Schwarzer Hintergrund
    19. $background_color = imagecolorallocate($im, 0, 0, 0);
    20. // gelber Text
    21. $text_color = imagecolorallocate($im, 255, 255, 0);
    22. // genaueres zu Funktion auf php.net
    23. imagestring($im, 5, 0, 0, $iRandVal, $text_color);
    24. // PNG Bild erzeugen und senden
    25. imagepng($im);
    26. // Bild auf dem Server loeschen
    27. imagedestroy($im);
    28. ?>
    Alles anzeigen


    3. die Datei die prüft ob der eingegebene Code stimmt

    PHP-Quellcode

    1. <?php
    2. // Maßnahme gegen Sctiptangriffe
    3. // Öffnen der Datei, die in insert.php erzeugt wurde
    4. // und deren Name per GET übergeben wurde.
    5. $codeFile = file("codes/".$GET['iCode'].".hsp");
    6. // Check ob die gepostete Zahl mit der aus der Datei uebereinstimmt
    7. if($codeFile[0] != md5($_POST['imgCode']))
    8. {
    9. echo "<p style=\"width:550px;\">Ung&uuml;ltiger Postcode!<br />".
    10. "Bitte gehen Sie zur&uuml;ck und korriegieren den Postcode. Danke. ".
    11. "<a href=\"javascript:history.back()\">Zur&uuml;ck</a>";
    12. exit;
    13. }
    14. // Alles passt und dein Code kann ausgeführt werden
    15. ?>
    Alles anzeigen


    das Formular wird wunderbar angezeigt, incl. dem Bild aber wenn ich das ganze sende und die check.php greift geschieht folgendes:

    Quellcode

    1. Warning: file(codes/.hsp): failed to open stream: No such file or directory in /srv/www/htdocs/web119/html/test/check.php on line 5


    die Adresszeile stimmt aber, und der Code der in der Adresszeile steht stimmt auch mit dem Dateinamen überein der im Ordner Codes erstellt wurde ... allerdings verstehe ich nicht wieso da

    Quellcode

    1. codes/.hsp
    steht und nicht

    Quellcode

    1. codes/12345.hsp
    ... wobei 12345 jetzt für die generierte file steht ... weiß jemand wo das problem liegen könnte?

    1000Dank
    MfG
    DerDende
  • Hoi!
    Seh deinen Fehler schau mal hier:

    // Neue Datei im Unterverzeichnis /codes anlegen
    // der Dateiname wurde in der Datei insert.php erzeugt
    $fp = fopen("codes/".$_GET['iCode'].".hsp","w") or die("error");

    Das kmmt bei dir öfters vor. Zb beim CHMOD auch noch.
    Ich denke mal, dass das wieder son vorgescriptetes ist.
    Am einfachstes für den fehlerfreien Umgang damit, solltest du alles im Ordner /codes bearbeitet wie die Kommentare / Die Anleitung es sagt.
    greetz mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Schau mal in inser.php ob dort wirklich iCode per GET an die URL gegeben wurde.

    Um zu überprüfen was du per GET so alles bekommt (also zum debuggen) hat sich folgendes bewährt:

    PHP-Quellcode

    1. print_r($_GET);


    Dies liestet dir das Array auf (am besten dann den HTML-Source anschauen, alternativ, kannst du auch <pre>-Tags verwenden)
    [SIZE=1]"There's no right, there's no wrong, there's only popular opinion." Jeffrey Goines (Brad Pitt) in Twelve Monkeys[/SIZE]

    [SIZE=1]$ killall chico[/SIZE]
  • Quellcode

    1. Array ( [iCode] => 9649666 )

    das spuckt er mir aus wenn ich in die check.php das print_r($_GET); schreibe

    ... d.h. er bekommt ja alles geliefert was er braucht ... hmpf ich verstehs einfach nicht

    die chmod sachen hab ich überprüft, der folder codes hat alle rechte und die erstellten files auch