php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.10.2011, 13:15  
Neuer Benutzer
 
Registriert seit: 19.10.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Zulukaktus befindet sich auf einem aufstrebenden Ast
Standard $_SESSION und Captcha funktioniert nicht richtig

Moin alle mit einander,

ich hab so ein kleines, mittel, großes Problem

Und zwar ich hab ein Kontaktformular gebaut, das funktioniert auch super, aber es gibt ja die böses Spambots also wollte ich eine Captchacode abfrage dazu bauen.

Das Captchabild zu erstellen klappt auch einwandfrei. Nur ich hab jetzt das Problem dass ich den Captchacode beim erstellen noch mal in der $_SESSION var speicher um diesen später mit der Eingabe abzugleichen. Und da taucht jetzt das Problem auf der Captchacode würd erst in der Var gespeichert wenn ich die Seite neu lade, und dann nicht der Aktuelle sondern der von der alten Captchagrafik. Also habe ich in meiner $_SESSION beim ersten aufruf nichts stehn drücke ich dann F5 steht da der Code des Captchas das ich beim ersten aufruf generiert habe.....

Hier noch meine Codes

Captcha generator:

PHP-Code:
<?php

session_start
();
session_unset();

$length 5;

$chars "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";

srand((double)microtime() * 1000000);
$i 0;
while (
$i $length) {
    
$num rand() % strlen($chars);

    
$tmp substr($chars$num1);

    
$temp .= $tmp;
    
$text[$i] = $tmp;

    
$i++;
}


$_SESSION['captcha'] = $temp;


Header ("Content-type: image/png");

$bild ImageCreateFromPNG ("2.png");


$farbe_w ImageColorAllocate ($bild255255255);
$farbe_b ImageColorAllocate ($bild000);


ImageTTFText ($bild13, -3010,  20$farbe_b"arial.ttf"$text[0]);
ImageTTFText ($bild1353022$farbe_b"arial.ttf"$text[1]);
ImageTTFText ($bild13,   05024$farbe_b"arial.ttf"$text[2]);
ImageTTFText ($bild13,  -5,  7020$farbe_b"arial.ttf"$text[3]);
ImageTTFText ($bild13,  30,  10027$farbe_b"arial.ttf"$text[4]);

ImagePng     ($bild);

ImageDestroy ($bild);

?>
Formular:

PHP-Code:
<?php
session_start
();
?>


<form method="post" action="" id="myform" onsubmit="javascript: try{myForm();}catch(e){console.log(e);} return false;">
    <table>
         <tr>
           <td>Name:</td>
           <td><input type="text" size="20" name="name"></td>
         </tr>
         <tr>
           <td>Betreff:</td>
           <td><input type="text" size="20" name="title"></td>
         </tr>
         <tr>
          <td>E-mail:</td>
          <td><input type="text" size="40" name="email"></td>
        </tr>
        <tr>
          <td>Text:</td>
          <td><textarea name="text" cols="50" rows="10">kurzer Text!!!</textarea></td>
        </tr>
        <tr>
          <td>Captcha:</td>
          <td><img src="captcha/bild.php?ts=<?=time();?>" alt="Captcha"><br><input type="text" size="20" name="captcha"></td>
        </tr>
    </table>
    <input type="submit" id="submit"/>
</form>




<? print_r ($_SESSION);?>

Ich hoffe ihr könnt mir helfen und ich hab euch alle Wichtigen Infos zukommen lassen. Wenn nicht Sry, mein erster Beitrag hier bei euch

So danke schonmal für eure Hilfe

Grüße

Zulukaktus
Zulukaktus ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.10.2011, 14:17  
Erfahrener Benutzer
 
Benutzerbild von Nullraff
 
Registriert seit: 27.10.2010
Beiträge: 183
PHP-Kenntnisse:
Fortgeschritten
Nullraff befindet sich auf einem aufstrebenden Ast
Standard

Wo ist das Skript, in dem du den eingegebenen Wert mit dem SESSION-Wert vergleichst?
__________________
Kaum macht man's richtig, schon geht's
Nullraff ist offline   Mit Zitat antworten
Alt 19.10.2011, 14:33  
Neuer Benutzer
 
Registriert seit: 19.10.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Zulukaktus befindet sich auf einem aufstrebenden Ast
Standard

Eigentlich klebt das unten am Formular, aber hab es vorläufig 'gelöscht',
da ich schon durch den print_r ($_SESSION) Befehl in der letzten Zeile des Formular sehen kann das die Var nicht stimmt.
Zulukaktus ist offline   Mit Zitat antworten
Alt 19.10.2011, 14:37  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.141
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Info: Im Zusammenhang mit captchas wird hier auch sehr gerne auf diesen hier verwiesen:

http://1ngo.de/web/captcha-spam.html

[edit]
Weiterer Lesestoff: http://www.php.de/php-einsteiger/790...schuetzen.html (was noch tun, um Gästebuch vor Spam zu schützen)
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (19.10.2011 um 14:40 Uhr).
hausl ist offline   Mit Zitat antworten
Alt 19.10.2011, 14:44  
Erfahrener Benutzer
 
Benutzerbild von Nullraff
 
Registriert seit: 27.10.2010
Beiträge: 183
PHP-Kenntnisse:
Fortgeschritten
Nullraff befindet sich auf einem aufstrebenden Ast
Standard

Du schickst doch das Formular per submit ab. Prüfe mal in dem aufgerufenen Skript deine SESSION-Variablen!
__________________
Kaum macht man's richtig, schon geht's
Nullraff ist offline   Mit Zitat antworten
Alt 19.10.2011, 14:51  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.114
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard

statt print_r mal das schreiben

PHP-Code:
<?php
if(isset($_POST['captcha'])){
  echo 
"Antwort:  "$_SESSION['captcha']." | ".$_POST['captcha'];  
}
?>
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp ist offline   Mit Zitat antworten
Alt 19.10.2011, 15:01  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.141
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Die Seite ruft sich nach submit selbst auf (action="") und dann wird auch wieder ein neues Captcha erzeugt:

Code:
<tr> 
          <td>Captcha:</td> 
          <td><img src="captcha/bild.php?ts=<?=time();?>" alt="Captcha"><br><input type="text" size="20" name="captcha"></td> 
        </tr>
... und das killt ruft doch diese bild.php (captcha generator) Datei auf, die auch die Session unset macht...

Ev. hängts damit zusammen??
PHP-Code:
session_start(); 
session_unset();
... 
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 19.10.2011, 15:12  
Neuer Benutzer
 
Registriert seit: 19.10.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Zulukaktus befindet sich auf einem aufstrebenden Ast
Standard

Die ganze Form wird später dann so weiter verarbeitet :

Code:
<script type="text/javascript">

	function myForm(){


			var name = $('input[name=name]');
			var title = $('input[name=title]');
			var email = $('input[name=email]');
			var comment = $('textarea[name=text]');
			var data = 'name=' + name.val() + '&email=' + email.val() + '&title=' + title.val()
				+ '&text='  + encodeURIComponent(comment.val());

			$.post('ajax.inc.php?t=contact', data, function(data) {
				$('#content').fadeIn(1200).html(data);
			});

	}
</script>
Da fehlt gerade noch die IF Abfrage ob das Captcha richtig eingegeben wurde.

Und das Problem ist halt das immer in der $_SESSION der Wert des alten Captchas steht....
Zulukaktus ist offline   Mit Zitat antworten
Alt 18.12.2011, 02:20  
Benutzer
 
Registriert seit: 18.12.2011
Beiträge: 37
PHP-Kenntnisse:
Fortgeschritten
K313 befindet sich auf einem aufstrebenden Ast
Standard

zuerst man muss die Gültigkeitzeit des Bildes mit früherer Zeitdatum eingegeben sein, sonst zeigt der Browser das Bild aus der Cash.
Code:
header("Content-type: image/jpeg");
 header("Pragma: no-cache");
 header("Expires: Mon, 25 Jul 2011 05:00:00 GMT"); 
 header("Last-Modified: " . gmdate("D, d M Y H:i:s", 10000) . " GMT");
 header("Cache-Control: no-store, no-cache, must-revalidate"); 
 header("Cache-Control: post-check=0, pre-check=0", false);
und Header() soll am Anfang stehen, sonst beim Fehler oder Warnung wird der content als "text/html" ausgegeben, weil nach dem Ausführung kann die HeaderInformation schon nicht verendert werden.
__________________
CAPTCHA_K313
created: 0.0015 sec.
K313 ist offline   Mit Zitat antworten
Alt 18.12.2011, 06:26  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Zulukaktus Beitrag anzeigen
Hier noch meine Codes
Deine Dokumentation ist sehr dürftig.
Zitat:
Captcha generator:
PHP-Code:
<?php
session_start
();
session_unset();
Wat soll der Unfug?
Zitat:
If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use unset() to unregister a session variable, i.e. unset ($_SESSION['varname']);.
Das
PHP-Code:
$_SESSION['captcha'] = $temp
reicht völlig.
Allerdings vermisse ich in Deinem Script den Fallback, wenn der Client den Session-Keks nicht will.

Und das ist auch pfui,
PHP-Code:
    $temp .= $tmp
weil die Variable vor der ersten Verwendung nicht initialisiert wurde. Ist error_reporting > 7, stirbt das Script wegen der Warnung.

Die nächste Falltür lauert da,
imageTTFText ($bild, 13, -30, 10, 20, $farbe_b, "arial.ttf", $text[0]);
wenn PHP die Schrift nicht findet.

Der Algorithmus, um 5 unterschiedliche Zeichen zu finden, ist zudem auch etwas dürftig.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variablenübergabe mit $_Session funktioniert nicht richtig salerno PHP Einsteiger 5 25.09.2011 15:59
[Erledigt] function funktioniert ohne alert() nicht richtig Tholi JavaScript, Ajax und mehr 1 19.02.2011 02:40
[Erledigt] Captcha funktioniert nicht DJ_RhoxxZ PHP Tipps 2010 12 22.07.2010 14:20
[Erledigt] FTP und MySQL funktioniert nicht mehr richtig JackSparrow PHP Tipps 2010 2 06.06.2010 20:54
Verschlüsselung funktioniert nicht richtig netmario PHP Tipps 2010 2 19.05.2010 22:57
[Erledigt] Checkuser und/oder Logout funktioniert nicht richtig p300d PHP Tipps 2009 7 28.06.2009 13:33
Select funktioniert nicht richtig JooiPHP Datenbanken 7 18.06.2009 15:09
[Erledigt] Apache funktioniert nicht richtig YYA Server, Hosting und Workstations 5 16.06.2008 15:24
Warum funktioniert meine Statistik nicht richtig? Calli PHP Tipps 2007 1 27.11.2005 08:49
Script funktioniert nicht richtig -> fehlermeldungen PHP Tipps 2005-2 2 12.09.2005 11:29
Karte funktioniert nicht ganz richtig ( koardinaten system ) PHP Tipps 2005-2 7 15.06.2005 16:48
PHP funktioniert nicht richtig?! PHP Tipps 2005-2 26 11.06.2005 09:05
datenübergabe funktioniert nicht richtig Fraylman PHP Tipps 2004 6 25.08.2004 13:49
Emailversendung funktioniert nicht richtig PHP Tipps 2004 1 11.08.2004 23:16
php funktioniert nicht richtig PHP Tipps 2004 3 14.06.2004 08:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
$_session[\'captcha_code\'] geht nicht, imagettftext in methode funktioniert nicht, captchas wie funktioniert, captcha kreis richtige lösung

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum