kostenloser Webspace werbefrei: lima-city


Problem mit Session

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m*4

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. o****n

    nur so ne vermutung, hast du in der zweiten datei session_start() aufgerufen?

    lg
  4. Autor dieses Themas

    m*4

    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.
  5. session_start(); muss immer in Zeile 1 des Skriptes stehen. IMMER am Anfang. Sonst gehts net.
  6. Autor dieses Themas

    m*4

    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 &lt;b&gt;navigationhistory&lt;/b&gt; 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

  7. session_start(); muss immer in Zeile 1 des Skriptes stehen. IMMER am Anfang. Sonst gehts net.

    !!!!!!!!!
  8. Autor dieses Themas

    m*4

    DAS HABE ICH KAPIERT!!!

    Jetzt klappt es aber immer nur einmal, wenn ich die Cookies nicht lösche.
  9. Ähmm...Du weißt das Cookies und Sessions etwas ganz anderes sind???
  10. Poste doch bitte mal den Kompletten Quellcode der aufzurufenden Seite 2!!!
  11. Autor dieses Themas

    m*4

    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>&nbsp;</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\'); ?>
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!