• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

php-js Variable übergeben

georg45

New member
Werke schon seit Stunden an der Lösung für folgendes Problem (html und 1 Skript weiter unten):
"kontakt-test.html" (ist Teil eines künftigen Formulars mit Captcha)
Auf dieser html-Seite soll ein random generiertes Captcha-Bild ausgegeben werden (generiert mit "captcha2.php").

Um den generierten Code im Formular mit js auf Richtigkeit abzuchecken, habe ich zum Test zunächst im html ein js mit einem Alert für den Inhalt des Codes (Zeile 12-14) eingefügt.

Im php in Zeile 17 den Code mit echo übergeben.

Führt man das html aus, gibt es keine Alert-Meldung und auch kein Captcha-Bild (Zeile 16) mit Fehlermeldung '$text' is undefined.

Entfernt man im php in der Zeile 30 den Befehl "imagepng...", funktioniert der Alert (5stelliger Code wird gezeigt), aber kein Captcha-Bild.

Entfernt man stattdessen im php die Zeile 17 (echo....), wird Captcha-Bild richtig angezeigt, aber keine Alert-Meldung und '$text' undefined.

Das "ganze Theater" sollte als Vorbereitung für ein komplettes Formular mit Captcha dienen, bei dem nach Submit alle Felder inkl. dem Captcha-Code mit js abprüft werden sollen.

Bin leider kein PHP-Guru - aber mittlerweile schon ziemlich verzweifelt.
Vielen Dank im voraus für Eure Hilfe.

Georg :confused:

Html (kontakt-test.html):
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css"  />
<meta http-equiv="Content-Language" content="de" />
<TITLE></title>
</head>
<body>
<script type="text/javascript" src="captcha2.php"></script>

<script type="text/javascript">
alert($text)
</script>

Bild: 	<img src="captcha2.php" border="0" title="Sicherheitscode" />

</body>
</html>

PHP (captcha2.php)
PHP:
<?php
session_start();
unset($_SESSION['captcha_spam']);

function randomString($len) {
srand(date("s"));         //Der String $possible enthält alle Zeichen, die verwendet werden sollen
$possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
$str="";
while(strlen($str)<$len) {
 $str.=substr($possible,(rand()%(strlen($possible))),1);
 }
 return($str);      }

 $text = randomString(5);  //Die Zahl bestimmt die Anzahl stellen


echo ('var $text ="'.$text.'"');

 $_SESSION['captcha_spam'] = $text;
 header('Content-type: image/png');
 $file = '../captcha/captcha.png';
 $img = ImageCreateFromPNG($file); //Backgroundimage
 $color = ImageColorAllocate($img, 0, 0, 0); //Farbe
 $ttfsize = 22; //Schriftgrösse
 $angle = rand(0,3);
 $t_x = rand(7,20);
 $t_y = 30;
 imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, "../captcha/xfiles.ttf", $text);

 imagepng($img);

 imagedestroy($img);
 ?>
 
Du verstehst echt nicht, was der Server und was der Client macht. Dann vermischt du noch JS und PHP und fügst in ein Bild, ja in ein BILD JS Code ein.
 
er hat recht das ist falsch. Entweder du stellst das Java-script in die PHP-Datei oder die PHP in HTML
$img = ImageCreateFromPNG($file); //Backgroundimage das geht nicht so
sondern <body background="hintergrundfertig.png" alt="Bild"> im html.
was willst du denn mit rand erreichen? kannst mich gern kontaktieren per Mail puschelemo21@t-online.de und wir können dort weiter diskutieren.
p.s. wenn du java und php vermischen willst geht das so
<?php
bla bla
?>
<script type="text/javascript">
alert($text)
</script>
 
Zuletzt bearbeitet:
und fügst in ein Bild, ja in ein BILD JS Code ein.
Richtig, das kann nicht gutgehen. Zum Verständnis dazu noch einige Bemerkungen.
@georg45: Wenn mit den img-funktionen ein Bild per php erstellt wird, fürfen keinerlei Ausgaben per echo oder wie sonst auch erfolgen, diese zerstören alle dein IMG. Ein Leerzeile vor dem <php? darf auch nicht sein! Dazu gehört auch ein passender Header mit Content-type: image/png, den ich auch vermisse.
 
@bluemoon: du bist wohl auch nicht so fit in der Materie, was?
$img = ImageCreateFromPNG($file); //Backgroundimage das geht nicht so
sondern <body background="hintergrundfertig.png" alt="Bild">
Unsinn. Das script holt ein fertiges PNG um dort den Captcha-Text draufzuschreiben und anschließend als png an den browser zu schicken ("was willst du denn mit rand erreichen?" <- random captchas sind allgemein effizienter als immer denselben code abzufragen). Einzig die Einbindung im Script ist falsch (via <img>), sowie natürlich der js-php-mischcode der vor dem Bild ge-echot wird - außer dem Bild darf auf der Seite _nix_ ausgegeben werden.
kannst mich gern kontaktieren per Mail puschelemo21@t-online.de und wir können dort weiter diskutieren.
gut, dann können wir das Forum ja dichtmachen
 
p.s. wenn du java und php vermischen willst geht das so
<?php
bla bla
?>
<script type="text/javascript">
alert($text)
</script>

Das funktioniert auch nicht da dann "$text" ausgegeben wird und nicht der Inhalt von $text.

PHP:
<?php 
$text = "Hallo Welt";
?>
<script type="text/javascript">
alert("<?php echo $text;?>"); // Meldung mit "Hallo Welt"
</script>

Eine Captcha-Überprüfung mit JavaScript würde ich nicht machen, weil du damit es einem Angreifer recht einfach machst dass Captcha zu umgehen. JS wird ja im client ausgeführt und ist somit als Quellcode im Client verfügbar. Ich brauch da nur nen Blick reinwerfen um nen Script zu schreiben um dein Captcha zu umgehen.
 
was sollen diese Frechen Antworten Skooli ich hab nur versucht zu helfen aber wenn du mich so angreifst dann Helf ihm besser -.- +pff+ Fehler macht Jeder ausserdem lieber Helf ich als andere Leute dumm anzusprechen -.-
 
Das funktioniert auch nicht da dann "$text" ausgegeben wird und nicht der Inhalt von $text.

PHP:
<?php 
$text = "Hallo Welt";
?>
<script type="text/javascript">
alert("<?php echo $text;?>"); // Meldung mit "Hallo Welt"
</script>

Eine Captcha-Überprüfung mit JavaScript würde ich nicht machen, weil du damit es einem Angreifer recht einfach machst dass Captcha zu umgehen. JS wird ja im client ausgeführt und ist somit als Quellcode im Client verfügbar. Ich brauch da nur nen Blick reinwerfen um nen Script zu schreiben um dein Captcha zu umgehen.

So wie der OP es beschrieben hat, funktioniert es schon! Es liest die PHP-Datei als JS ein und in der PHP-Datei steht echo "var $text = " . $text;. Dann kann er in JS mit alert($text) darauf zugreifen.

was sollen diese Frechen Antworten Skooli ich hab nur versucht zu helfen aber wenn du mich so angreifst dann Helf ihm besser -.- +pff+ Fehler macht Jeder ausserdem lieber Helf ich als andere Leute dumm anzusprechen -.-

Du hilfst nicht, du verschlimmbesserst.

Die Lösung des Problems wurde in diesem Thread schon behandelt. Mach entweder eine gescheite Abfrage in dein PHP-Skript oder besser: Mach zwei PHP-Skripte daraus. Eines, das den Zufallsstring erzeugt und in der Session speichert, und ein anderes, das das Captcha ausgibt.
 
@bluemoon:
Meine Verwarnung wegen Beleidigung anderer Mitglieder hast Du ja nun in Deinem Postfach.
Mäßige in Zukunft Deinen Ton.
Beim nächsten groben Schnitzer bist Du raus...
 
Zurück
Oben