Problem mit Session
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
code
controller
datum
elektrotechnik
email
ende
erzeugte string
fehlermeldung
header
jemand
list
rand
stehen
string
tag
text
vermutung
zahl
zeile
-
Ich will so ein Captcha-Ding in ein Formular einbauen und habe mir dazu bie Google irgtag/ende">endein Script gesucht (http://www.stoppt-den-spam.info/webmaster/captcha-tutorial/zahlen-cpatcha/captcha-php-script.html). Das Problem ist nur, dass der erzeugte String nicht richtig gespeichert wird. Hier ist der Code, der den String und daraus die Bilddatei erzeugt:
<?php session_start(); unset($_SESSION[\'captcha_spam\']); function randomString($len) { function make_seed(){ list($usec , $sec) = explode (\' \', microtime()); return (float) $sec + ((float) $usec * 100000); } srand(make_seed()); //Der String $possible enthält alle Zeichen, die verwendet werden sollen $possible=\"0123456789\"; $str=\"\"; while(strlen($str)<$len) { $str.=substr($possible,(rand()%(strlen($possible))),1); } return($str); } $text = randomString(7); //Die Zahl bestimmt die Anzahl stellen $_SESSION[\'captcha_spam\'] = $text; header(\'Content-type: image/png\'); $img = ImageCreateFromPNG(\'captcha.PNG\'); //Backgroundimage $color = ImageColorAllocate($img, 130, 0, 0); //Farbe $ttf = $_SERVER[\'DOCUMENT_ROOT\'].\"/captcha/XFILES.TTF\"; //Schriftart $ttfsize = 20; //Schriftgrösse $angle = rand(-5,5); $t_x = rand(5,30); $t_y = 35; imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text); imagepng($img); imagedestroy($img); ?>
In Zeile 21 wird der erzeugte String in die Varibale geschrieben. Wenn ich aber im Script, indem die Daten gesendet werden die Variable abfragen will, ist diese leer($_SESSION[\'captcha_span\']). Ich kenne mich leider nicht so richtig mit Sessions aus. Hier ist der Code für das Script:
$sicherheitscode = true; if (isset($HTTP_GET_VARS[\'action\']) && ($HTTP_GET_VARS[\'action\'] == \'send\')) { session_start(); if(isset($_SESSION[\'captcha_spam\']) AND $_POST[\"sicherheitscode\"] == $_SESSION[\'captcha_spam\']){ unset($_SESSION[\'captcha_spam\']); // Eigentliches Script - Anfang // ... // Eigentliches Script - Ende } else { $sicherheitscode = false; } }
In Zeile 5 wird die Variable \"$_SESSION[\'captcha_spam\']\" benutzt.
Kann mir da jemand weiterhelfen??
Beitrag geändert: 13.5.2008 14:25:58 von m84 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
In dem Script habe ich in Zeile 4 session_start(); aufgerufen. Aber ohne session_start(); steht auch nichts drin. Allerdings habe ich das Script ja nicht selbst geschrieben, deshalb habe ich es mal dringelassen.
-
Jetzt hat es einmal funktioniert und danach kam dann immer diese Fehlermeldeung:
Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>navigationhistory</b> of the object you are trying to operate on was loaded _before_ the session was started in /var/www/vhosts/elektromaster.de/httpdocs/includes/application_top.php on line 414
Wenn ich das \"session_start();\" vor \"require(\'includes/application_top.php\');\" setze, klappt es zwar, aber ich bekomme diese Fehlermeldung, wenn ich es dahinter setze, geht\'s wieder nicht. Das ist echt ärgerlich. Gibt es eine Möglichkeit das ganze ohne Sessions zu machen?
---
Ich habe jetzt gerade herausgefunden, dass das wieder klappt, sobald ich meine Cookies lösche.
Beitrag geändert: 13.5.2008 14:48:39 von m84 -
session_start(); muss immer in Zeile 1 des Skriptes stehen. IMMER am Anfang. Sonst gehts net.
!!!!!!!!! -
DAS HABE ICH KAPIERT!!!
Jetzt klappt es aber immer nur einmal, wenn ich die Cookies nicht lösche. -
Ähmm...Du weißt das Cookies und Sessions etwas ganz anderes sind???
-
Poste doch bitte mal den Kompletten Quellcode der aufzurufenden Seite 2!!!
-
Das ist \'n Kontakformular von einem osCommerce-Shop.
<?php session_start(); /* $Id: contact_us.php,v 1.42 2003/06/12 12:17:07 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ require(\'includes/application_top.php\'); require(DIR_WS_LANGUAGES . $language . \'/\' . FILENAME_CONTACT_US); $error = false; $sicherheitscode = true; if (isset($HTTP_GET_VARS[\'action\']) && ($HTTP_GET_VARS[\'action\'] == \'send\')) { if(isset($_SESSION[\'captcha_spam\']) AND $_POST[\"sicherheitscode\"] == $_SESSION[\'captcha_spam\']){ unset($_SESSION[\'captcha_spam\']); // Eigentliches Script - Anfang $name = tep_db_prepare_input($HTTP_POST_VARS[\'name\']); $email_address = tep_db_prepare_input($HTTP_POST_VARS[\'email\']); $enquiry = tep_db_prepare_input($HTTP_POST_VARS[\'enquiry\']); if (tep_validate_email($email_address)) { tep_mail(STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, EMAIL_SUBJECT, $enquiry, $name, $email_address); tep_redirect(tep_href_link(FILENAME_CONTACT_US, \'action=success\')); } else { $error = true; $messageStack->add(\'contact\', ENTRY_EMAIL_ADDRESS_CHECK_ERROR); } // Eigentliches Script - Ende } else { $sicherheitscode = false; } } $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_CONTACT_US)); ?> <!doctype html public \"-//W3C//DTD HTML 4.01 Transitional//EN\"> <html <?php echo HTML_PARAMS; ?>> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=<?php echo CHARSET; ?>\"> <?php // BOF: WebMakers.com Changed: Header Tag Controller v1.0 // Replaced by header_tags.php if ( file_exists(DIR_WS_INCLUDES . \'header_tags.php\') ) { require(DIR_WS_INCLUDES . \'header_tags.php\'); } else { ?> <title><?php echo TITLE ?></title> <?php } // EOF: WebMakers.com Changed: Header Tag Controller v1.0 ?> <base href=\"<?php echo (($request_type == \'SSL\') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>\"> <link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheet.css\"> </head> <body marginwidth=\"0\" marginheight=\"0\" topmargin=\"0\" bottommargin=\"0\" leftmargin=\"0\" rightmargin=\"0\"> <!-- header //--> <?php require(DIR_WS_INCLUDES . \'header.php\'); ?> <!-- header_eof //--> <!-- body //--> <table border=\"0\" width=\"100%\" cellspacing=\"3\" cellpadding=\"3\"> <tr> <td width=\"<?php echo BOX_WIDTH; ?>\" valign=\"top\"><table border=\"0\" width=\"<?php echo BOX_WIDTH; ?>\" cellspacing=\"0\" cellpadding=\"2\"> <!-- left_navigation //--> <?php require(DIR_WS_INCLUDES . \'column_left.php\'); ?> <!-- left_navigation_eof //--> </table></td> <!-- body_text //--> <td width=\"100%\" valign=\"top\"><?php echo tep_draw_form(\'contact_us\', tep_href_link(FILENAME_CONTACT_US, \'action=send\')); ?> <table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td> <p style=\"font-size: 18px; font-family: sans-serif;\"> <b>Solar-Shop.com<br></b> <b style=\"font-size: 80%;\">Elektrotechnik Stevens</b><br> <span style=\"font-size: 80%;\"> Myllendonker Str.59a<br> D-41352 Korschenbroich<br><br> Tel. +49 (0) 2161 977-2913<br> Fax +49 (0) 2161 977-2912<br><br> <img src=\"../images/email_adr3.gif\"> </span> </p> </td> <td class=\"pageHeading\" align=\"right\" valign=\"top\"><?php echo tep_image(DIR_WS_IMAGES . \'table_background_contact_us.gif\', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?> <p> </p> </td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator(\'pixel_trans.gif\', \'100%\', \'10\'); ?></td> </tr> <?php if ($messageStack->size(\'contact\') > 0) { ?> <tr> <td><?php echo $messageStack->output(\'contact\'); ?></td> </tr> <tr> <td><?php echo tep_draw_separator(\'pixel_trans.gif\', \'100%\', \'10\'); ?></td> </tr> <?php } if (isset($HTTP_GET_VARS[\'action\']) && ($HTTP_GET_VARS[\'action\'] == \'success\')) { ?> <tr> <td class=\"main\" align=\"center\"><?php echo tep_image(DIR_WS_IMAGES . \'table_background_man_on_board.gif\', HEADING_TITLE, \'0\', \'0\', \'align=\"left\"\') . TEXT_SUCCESS; ?></td> </tr> <tr> <td><?php echo tep_draw_separator(\'pixel_trans.gif\', \'100%\', \'10\'); ?></td> </tr> <tr> <td><table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"2\" class=\"infoBox\"> <tr class=\"infoBoxContents\"> <td><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\"> <tr> <td width=\"10\"><?php echo tep_draw_separator(\'pixel_trans.gif\', \'10\', \'1\'); ?></td> <td align=\"right\"><?php echo \'<a href=\"\' . tep_href_link(FILENAME_DEFAULT) . \'\">\' . tep_image_button(\'button_continue.gif\', IMAGE_BUTTON_CONTINUE) . \'</a>\'; ?></td> <td width=\"10\"><?php echo tep_draw_separator(\'pixel_trans.gif\', \'10\', \'1\'); ?></td> </tr> </table></td> </tr> </table></td> </tr> <?php } else { ?> <tr> <td> <?php if ($sicherheitscode == false) echo \"<p style=\\\"font-weight:bold;color:#DD0000;\\\">Der Sicherheitscode wurde nicht richtig eingegeben!</p>\"; ?> <table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"2\" class=\"infoBox\"> <tr class=\"infoBoxContents\"> <td><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\"> <tr> <td class=\"main\"><?php echo ENTRY_NAME; ?></td> </tr> <tr> <td class=\"main\"><?php echo tep_draw_input_field(\'name\'); ?></td> </tr> <tr> <td class=\"main\"><?php echo ENTRY_EMAIL; ?></td> </tr> <tr> <td class=\"main\"><?php echo tep_draw_input_field(\'email\'); ?></td> </tr> <tr> <td class=\"main\"><?php echo ENTRY_ENQUIRY; ?></td> </tr> <tr> <td><?php echo tep_draw_textarea_field(\'enquiry\', \'soft\', 50, 15); ?></td> </tr> <tr> <td class=\"main\"><?php echo \"Sicherheitscode:\" ?></td> </tr> <tr> <td> <p><input type=\"text\" name=\"sicherheitscode\" style=\"width: 140px; margin-bottom: 3px;\"><br><img src=\"captcha/captcha.php\" border=\"0\" titel=\"Sicherheitscode\"></p> </td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator(\'pixel_trans.gif\', \'100%\', \'10\'); ?></td> </tr> <tr> <td><table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"2\" class=\"infoBox\"> <tr class=\"infoBoxContents\"> <td><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\"> <tr> <td width=\"10\"><?php echo tep_draw_separator(\'pixel_trans.gif\', \'10\', \'1\'); ?></td> <td align=\"right\"><?php echo tep_image_submit(\'button_continue.gif\', IMAGE_BUTTON_CONTINUE); ?></td> <td width=\"10\"><?php echo tep_draw_separator(\'pixel_trans.gif\', \'10\', \'1\'); ?></td> </tr> </table></td> </tr> </table></td> </tr> <?php } ?> </table></form></td> <!-- body_text_eof //--> <td width=\"<?php echo BOX_WIDTH; ?>\" valign=\"top\"><table border=\"0\" width=\"<?php echo BOX_WIDTH; ?>\" cellspacing=\"0\" cellpadding=\"2\"> <!-- right_navigation //--> <?php require(DIR_WS_INCLUDES . \'column_right.php\'); ?> <!-- right_navigation_eof //--> </table></td> </tr> </table> <!-- body_eof //--> <!-- footer //--> <?php require(DIR_WS_INCLUDES . \'footer.php\'); ?> <!-- footer_eof //--> <br> </body> </html> <?php require(DIR_WS_INCLUDES . \'application_bottom.php\'); ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage