lajollaig Posted October 15, 2007 Share Posted October 15, 2007 Hello helpful people! For the record, I am a Newbie in PHP... I found a wonderful Captcha script and it works wonderfully, except when i use include to put it into another file... I get this error message: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/user/public_html/index.php:12) in /home/user/public_html/securimage.php on line 386 After some short research here it appears that this happens because there is already HTML output in the main page.. I am using the include function to add it (the form) to the regular index.php page.... Do I need to add something in the headers to prevent this? Here is the two relevant scripts: <?php /* This is the contact form I use on my site Feel free to modify it and use it as a guide to setting up securimage for your site. */ $to = "email@email.com"; if (!isset($_POST['submit'])) { showForm(); } else { //form submitted $error = 0; if(empty($_POST['name'])) { $error = 1; $errstr[] = "Please enter a name"; } if(!preg_match("/^(?:[\w\d]+\.?)+@(??:[\w\d]\-?)+\.)+\w{2,4}$/", $_POST['email'])) { $error = 1; $errstr[] = "Please enter a valid email address"; } if (!preg_match("/^[0-9]{3}[-][0-9]{3}[-]{1,1}[0-9]{4}$/", $_POST['phone'])){ $error = 1; $errstr[] = "Phone number should be entered as digits in the following format: ###-###-####"; } if (empty($_POST['subject'])) { $error = 1; $errstr[] = "Please enter a subject"; } if(empty($_POST['message']) || preg_match("/^enter your message here$/i", $_POST['message'])) { $error = 1; $errstr[] = "Please enter a message"; } if(empty($_POST['imagetext'])) { $error = 1; $errstr[] = "Please validate the image code"; } else { include "securimage.php"; $img = new Securimage(); $valid = $img->check($_POST['imagetext']); if(!$valid) { $error = 1; $errstr[] = "The code you entered was incorrect"; } } if ($error == 1) { echo "<center>\n<font style=\"color: #FF0000\">\n"; foreach($errstr as $err) { echo "<li> " . $err . "</li>\n"; } echo "</font>\n</center>\n<br />\n\n"; showForm(); } else { @mail($to, " Inquiry - " . $_POST['subject'], " INQUIRY\n================================\nDate: " . date("r") . "\n\nName:" . $_POST['name'] . " \nEmail: " . $_POST['email'] . " \nPhone: " . $_POST['phone'] . "\n\nMessage: \n" . $_POST['reason'] . "\n\n" . stripslashes($_POST['message']), "From: " . $_POST['email']); echo "<center>\nThank you for contacting us. <br /> Your input has been received and we will respond shortly. <br /> "; } } //else submitted function showForm() { $_POST['message'] = @htmlspecialchars(@$_POST['message']); echo <<<EOD <style type="text/css"> body { font-size: 14px; } a { text-decoration: none; color: #0099DD; } a:hover { text-decoration: underline; color: #00FF00; } div.body { width: 50%; } .heading { font-size: 24px; text-decoration: underline; } TABLE.dl { background-color: #FFFFFF; border: solid 1px #000000; } TD.head { background-color: #0096D2; color: #FFFFFF; font-size: 14px; text-align: center; } TD.body { background-color: #DCF0FA; color: #000000; font-size: 13px; } TD.text { font-size: 14px;} </style> <form method="POST"> <table class="dl" cellpadding="5" cellspacing="1" width="95%" align="center"> <tr> <td class="head" align="center" colspan="2">Contact Form</td> </tr> <tr> <td class="body" align="left">Name</td> <td class="body" align="center"><input type="text" name="name" value="{$_POST['name']}" /></td> </tr> <tr> <td class="body" align="left">Email Address</td> <td class="body" align="center"><input type="text" name="email" value="{$_POST['email']}" /></td> </tr> <tr> <td class="body" align="left">Phone <font size="1" color="red">111-222-3333 format</font></td> <td class="body" align="center"><input type="text" name="phone" value="{$_POST['phone']}" /></td> </tr> <tr> <td class="body" align="left">Subject</td> <td class="body" align="center"><input type="text" name="subject" value="{$_POST['subject']}" /></td> </tr> <tr> <td class="body" align="center" colspan="2"><textarea name="message" rows="8" cols="50">{$_POST['message']}</textarea></td> </tr> <tr> <td class="body" align="center" colspan="2"><img src="securimage_show.php"></td> </tr> <tr> <td class="body" align="left">Enter the text above</td> <td class="body" align="center"><input type="text" name="imagetext" /></td> </tr> <tr> <td class="body" align="center" colspan="2"><input type="submit" name="submit" value="Send Form" /></td> </tr> </table> </form> EOD; } ?> and <?php /** * Project: Securimage: A PHP class for creating and managing form CAPTCHA images<br /> * File: securimage.php<br /> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version.<br /> * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details.<br /> * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br /> * * If you found this script useful, please take a quick moment to rate it.<br /> * http://www.hotscripts.com/rate/49400.html Thanks. * * @link http://www.NeoProgrammers.com NeoProgrammers * @link http://www.neoprogrammers.com/download.php?file=securimage.zip Download Latest Version * @link http://www.neoprogrammers.com/Securimage_Docs/ Online Documentation * @copyright 2007 Drew Phillips * @author drew010 <drew@drew-phillips.com> * @version 1.0 (June 21 2007) * @package Securimage * */ /** ChangeLog 1.0 - Added the ability to use a selected character set, rather than a-z0-9 only. - Added the multi-color text option to use different colors for each letter. - Switched to automatic session handling instead of using files for code storage - Added GD Font support if ttf support is not available. Can use internal GD fonts or load new ones. - Added the ability to set line thickness - Added option for drawing arced lines over letters - Added ability to choose image type for output - Removed file storage method */ /** * Output images in JPEG format */ define('SI_IMAGE_JPEG', 1); /** * Output images in PNG format */ define('SI_IMAGE_PNG', 2); /** * Output images in GIF format * Must have GD >= 2.0.28! */ define('SI_IMAGE_GIF', 3); /** * Securimage CAPTCHA Class. * * @package Securimage * @subpackage classes * */ class Securimage { /** * The desired width of the CAPTCHA image. * * @var int */ var $image_width = 130; /** * The desired width of the CAPTCHA image. * * @var int */ var $image_height = 50; /** * The image format for output.<br /> * Valid options: SI_IMAGE_PNG, SI_IMAGE_JPG, SI_IMAGE_GIF * * @var int */ var $image_type = SI_IMAGE_PNG; /** * The length of the code to generate. * * @var int */ var $code_length = 3; /** * The character set for individual characters in the image.<br /> * Letters are converted to uppercase.<br /> * The font must support the letters or there may be problematic substitutions. * * @var string */ var $charset = 'ABCDEFGHJKLMNPRSTUVWXYZ23456789'; /** * Whether to use a GD font instead of a TTF font.<br /> * TTF offers more support and options, but use this if your PHP doesn't support TTF.<br /> * * @var boolean */ var $use_gd_font = false; /** * The GD font to use.<br /> * Internal gd fonts can be loaded by their number.<br /> * Alternatively, a file path can be given and the font will be loaded from file. * * @var mixed */ var $gd_font_file = 'gdfonts/bubblebath.gdf'; /** * The approximate size of the font in pixels.<br /> * This does not control the size of the font because that is determined by the GD font itself.<br /> * This is used to aid the calculations of positioning used by this class.<br /> * * @var int */ var $gd_font_size = 20; // Note: These font options below do not apply if you set $use_gd_font to true with the exception of $text_color /** * The path to the TTF font file to load. * * @var string */ var $ttf_file = "./agent.ttf"; /** * The font size.<br /> * Depending on your version of GD, this should be specified as the pixel size (GD1) or point size (GD2)<br /> * * @var int */ var $font_size = 20; /** * The minimum angle in degrees, with 0 degrees being left-to-right reading text.<br /> * Higher values represent a counter-clockwise rotation.<br /> * For example, a value of 90 would result in bottom-to-top reading text. * * @var int */ var $text_angle_minimum = -20; /** * The minimum angle in degrees, with 0 degrees being left-to-right reading text.<br /> * Higher values represent a counter-clockwise rotation.<br /> * For example, a value of 90 would result in bottom-to-top reading text. * * @var int */ var $text_angle_maximum = 20; /** * The X-Position on the image where letter drawing will begin.<br /> * This value is in pixels from the left side of the image. * * @var int */ var $text_x_start = 8; /** * Letters can be spaced apart at random distances.<br /> * This is the minimum distance between two letters.<br /> * This should be <i>at least</i> as wide as a font character.<br /> * Small values can cause letters to be drawn over eachother.<br /> * * @var int */ var $text_minimum_distance = 30; /** * Letters can be spaced apart at random distances.<br /> * This is the maximum distance between two letters.<br /> * This should be <i>at least</i> as wide as a font character.<br /> * Small values can cause letters to be drawn over eachother.<br /> * * @var int */ var $text_maximum_distance = 45; /** * The background color for the image.<br /> * This should be specified in HTML hex format.<br /> * Make sure to include the preceding # sign! * * @var string */ var $image_bg_color = "#0096D2"; /** * The text color to use for drawing characters.<br /> * This value is ignored if $use_multi_text is set to true.<br /> * Make sure this contrasts well with the background color.<br /> * Specify the color in HTML hex format with preceding # sign * * @see Securimage::$use_multi_text * @var string */ var $text_color = "#CCCCCC"; /** * Set to true to use multiple colors for each character. * * @see Securimage::$multi_text_color * @var boolean */ var $use_multi_text = true; /** * String of HTML hex colors to use.<br /> * Separate each possible color with commas.<br /> * Be sure to precede each value with the # sign. * * @var string */ var $multi_text_color = "#FFFFFF,#CCCCCC,#FFFFCC,#CCFFFF,#99CCCC"; /** * Set to true to make the characters appear transparent. * * @see Securimage::$text_transparency_percentage * @var boolean */ var $use_transparent_text = true; /** * The percentage of transparency, 0 to 100.<br /> * A value of 0 is completely opaque, 100 is completely transparent (invisble) * * @see Securimage::$use_transparent_text * @var int */ var $text_transparency_percentage = 15; // Line options /** * Draw vertical and horizontal lines on the image. * * @see Securimage::$line_color * @see Securimage::$line_distance * @see Securimage::$line_thickness * @see Securimage::$draw_lines_over_text * @var boolean */ var $draw_lines = false; /** * The color of the lines drawn on the image.<br /> * Use HTML hex format with preceding # sign. * * @see Securimage::$draw_lines * @var string */ var $line_color = "#DBDABF"; /** * How far apart to space the lines from eachother in pixels. * * @see Securimage::$draw_lines * @var int */ var $line_distance = 25; /** * How thick to draw the lines in pixels.<br /> * 1-3 is ideal depending on distance * * @see Securimage::$draw_lines * @see Securimage::$line_distance * @var unknown_type */ var $line_thickness = 1; /** * Set to true to draw angled lines on the image in addition to the horizontal and vertical lines. * * @see Securimage::$draw_lines * @var boolean */ var $draw_angled_lines = false; /** * Draw the lines over the text.<br /> * If fales lines will be drawn before putting the text on the image.<br /> * This can make the image hard for humans to read depending on the line thickness and distance. * * @var boolean */ var $draw_lines_over_text = false; /** * For added security, it is a good idea to draw arced lines over the letters to make it harder for bots to segment the letters.<br /> * Two arced lines will be drawn over the text on each side of the image.<br /> * This is currently expirimental and may be off in certain configurations. * * @var boolean */ var $arc_linethrough = false; /** * The colors or color of the arced lines.<br /> * Use HTML hex notation with preceding # sign, and separate each value with a comma.<br /> * This should be similar to your font color for single color images. * * @var string */ var $arc_line_colors = "#8080ff"; //END USER CONFIGURATION //There should be no need to edit below unless you really know what you are doing. /** * The gd image resource. * * @access private * @var resource */ var $im; /** * The background image resource * * @access private * @var resource */ var $bgimg; /** * The code generated by the script * * @access private * @var string */ var $code; /** * The code that was entered by the user * * @access private * @var string */ var $code_entered; /** * Whether or not the correct code was entered * * @access private * @var boolean */ var $correct_code; /** * Class constructor.<br /> * Because the class uses sessions, this will attempt to start a session if there is no previous one.<br /> * If you do not start a session before calling the class, the constructor must be called before any * output is sent to the browser. * * <code> * $securimage = new Securimage(); * </code> * */ function Securimage() { if ( session_id() == '' ) { // no session has been started yet, which is needed for validation session_start(); } } /** * Generate a code and output the image to the browser. * * <code> * <?php * include 'securimage.php'; * $securimage = new Securimage(); * $securimage->show('bg.jpg'); * ?> * * * @param string $background_image The path to an image to use as the background for the CAPTCHA */ function show($background_image = "") { if($background_image != "" && is_readable($background_image)) { $this->bgimg = $background_image; } $this->doImage(); } /** * Validate the code entered by the user. * * <code> * $code = $_POST['code']; * if ($securimage->check($code) == false) { * die("Sorry, the code entered did not match."); * } else { * $valid = true; * } * </code> * @param string $code The code the user entered * @return boolean true if the code was correct, false if not */ function check($code) { $this->code_entered = $code; $this->validate(); return $this->correct_code; } /** * Generate and output the image * * @access private * */ function doImage() { if($this->use_transparent_text == true || $this->bgimg != "") { $this->im = imagecreatetruecolor($this->image_width, $this->image_height); $bgcolor = imagecolorallocate($this->im, hexdec(substr($this->image_bg_color, 1, 2)), hexdec(substr($this->image_bg_color, 3, 2)), hexdec(substr($this->image_bg_color, 5, 2))); imagefilledrectangle($this->im, 0, 0, imagesx($this->im), imagesy($this->im), $bgcolor); } else { //no transparency $this->im = imagecreate($this->image_width, $this->image_height); $bgcolor = imagecolorallocate($this->im, hexdec(substr($this->image_bg_color, 1, 2)), hexdec(substr($this->image_bg_color, 3, 2)), hexdec(substr($this->image_bg_color, 5, 2))); } if($this->bgimg != "") { $this->setBackground(); } $this->code = $this->generateCode($this->code_length); if (!$this->draw_lines_over_text && $this->draw_lines) $this->drawLines(); $this->drawWord(); if ($this->arc_linethrough == true) $this->arcLines(); if ($this->draw_lines_over_text && $this->draw_lines) $this->drawLines(); $this->saveData(); $this->output(); } /** * Set the background of the CAPTCHA image * * @access private * */ function setBackground() { $dat = @getimagesize($this->bgimg); if($dat == false) { return; } switch($dat[2]) { case 1: $newim = @imagecreatefromgif($this->bgimg); break; case 2: $newim = @imagecreatefromjpeg($this->bgimg); break; case 3: $newim = @imagecreatefrompng($this->bgimg); break; case 15: $newim = @imagecreatefromwbmp($this->bgimg); break; case 16: $newim = @imagecreatefromxbm($this->bgimg); break; default: return; } if(!$newim) return; imagecopy($this->im, $newim, 0, 0, 0, 0, $this->image_width, $this->image_height); } /** * Draw arced lines over the text * * @access private * */ function arcLines() { $colors = explode(',', $this->arc_line_colors); imagesetthickness($this->im, 3); $color = $colors[rand(0, sizeof($colors) - 1)]; $linecolor = imagecolorallocate($this->im, hexdec(substr($color, 1, 2)), hexdec(substr($color, 3, 2)), hexdec(substr($color, 5, 2))); $xpos = $this->text_x_start + ($this->font_size * 2) + rand(-5, 5); $width = $this->image_width / 2.66 + rand(3, 10); $height = $this->font_size * 2.14 - rand(3, 10); if ( rand(0,100) % 2 == 0 ) { $start = rand(0,66); $ypos = $this->image_height / 2 - rand(5, 15); $xpos += rand(5, 15); } else { $start = rand(180, 246); $ypos = $this->image_height / 2 + rand(5, 15); } $end = $start + rand(75, 110); imagearc($this->im, $xpos, $ypos, $width, $height, $start, $end, $linecolor); $color = $colors[rand(0, sizeof($colors) - 1)]; $linecolor = imagecolorallocate($this->im, hexdec(substr($color, 1, 2)), hexdec(substr($color, 3, 2)), hexdec(substr($color, 5, 2))); if ( rand(1,75) % 2 == 0 ) { $start = rand(45, 111); $ypos = $this->image_height / 2 - rand(5, 15); $xpos += rand(5, 15); } else { $start = rand(200, 250); $ypos = $this->image_height / 2 + rand(5, 15); } $end = $start + rand(75, 100); imagearc($this->im, $this->image_width * .75, $ypos, $width, $height, $start, $end, $linecolor); } /** * Draw lines on the image * * @access private * */ function drawLines() { $linecolor = imagecolorallocate($this->im, hexdec(substr($this->line_color, 1, 2)), hexdec(substr($this->line_color, 3, 2)), hexdec(substr($this->line_color, 5, 2))); imagesetthickness($this->im, $this->line_thickness); //vertical lines for($x = 1; $x < $this->image_width; $x += $this->line_distance) { imageline($this->im, $x, 0, $x, $this->image_height, $linecolor); } //horizontal lines for($y = 11; $y < $this->image_height; $y += $this->line_distance) { imageline($this->im, 0, $y, $this->image_width, $y, $linecolor); } if ($this->draw_angled_lines == true) { for ($x = -($this->image_height); $x < $this->image_width; $x += $this->line_distance) { imageline($this->im, $x, 0, $x + $this->image_height, $this->image_height, $linecolor); } for ($x = $this->image_width + $this->image_height; $x > 0; $x -= $this->line_distance) { imageline($this->im, $x, 0, $x - $this->image_height, $this->image_height, $linecolor); } } } /** * Draw the CAPTCHA code over the image * * @access private * */ function drawWord() { if ($this->use_gd_font == true) { if (!is_int($this->gd_font_file)) { //is a file name $font = @imageloadfont($this->gd_font_file); if ($font == false) { trigger_error("Failed to load GD Font file {$this->gd_font_file} ", E_USER_WARNING); return; } } else { //gd font identifier $font = $this->gd_font_file; } $color = imagecolorallocate($this->im, hexdec(substr($this->text_color, 1, 2)), hexdec(substr($this->text_color, 3, 2)), hexdec(substr($this->text_color, 5, 2))); imagestring($this->im, $font, $this->text_x_start, ($this->image_height / 2) - ($this->gd_font_size / 2), $this->code, $color); } else { //ttf font if($this->use_transparent_text == true) { $alpha = intval($this->text_transparency_percentage / 100 * 127); $font_color = imagecolorallocatealpha($this->im, hexdec(substr($this->text_color, 1, 2)), hexdec(substr($this->text_color, 3, 2)), hexdec(substr($this->text_color, 5, 2)), $alpha); } else { //no transparency $font_color = imagecolorallocate($this->im, hexdec(substr($this->text_color, 1, 2)), hexdec(substr($this->text_color, 3, 2)), hexdec(substr($this->text_color, 5, 2))); } $x = $this->text_x_start; $strlen = strlen($this->code); $y_min = ($this->image_height / 2) + ($this->font_size / 2) - 2; $y_max = ($this->image_height / 2) + ($this->font_size / 2) + 2; $colors = explode(',', $this->multi_text_color); for($i = 0; $i < $strlen; ++$i) { $angle = rand($this->text_angle_minimum, $this->text_angle_maximum); $y = rand($y_min, $y_max); if ($this->use_multi_text == true) { $idx = rand(0, sizeof($colors) - 1); $r = substr($colors[$idx], 1, 2); $g = substr($colors[$idx], 3, 2); $b = substr($colors[$idx], 5, 2); if($this->use_transparent_text == true) { $font_color = imagecolorallocatealpha($this->im, "0x$r", "0x$g", "0x$b", $alpha); } else { $font_color = imagecolorallocate($this->im, "0x$r", "0x$g", "0x$b"); } } imagettftext($this->im, $this->font_size, $angle, $x, $y, $font_color, $this->ttf_file, $this->code{$i}); if($this->shadow_text == true) { imagettftext($this->im, $this->font_size, $angle, $x + 2, $y + 2, $font_color, $this->ttf_file, $this->code{$i}); } $x += rand($this->text_minimum_distance, $this->text_maximum_distance); } //for loop } //else ttf font } //function /** * Generate a code * * @access private * @param int $len The code length * @return string */ function generateCode($len) { $code = ''; for($i = 1, $cslen = strlen($this->charset); $i <= $len; ++$i) { $code .= strtoupper( $this->charset{rand(0, $cslen - 1)} ); } return $code; } /** * Output image to the browser * * @access private * */ function output() { header("Expires: Sun, 1 Jan 2000 12:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); switch($this->image_type) { case SI_IMAGE_JPEG: header("Content-Type: image/jpeg"); imagejpeg($this->im, null, 90); break; case SI_IMAGE_GIF: header("Content-Type: image/gif"); imagegif($this->im); break; default: header("Content-Type: image/png"); imagepng($this->im); break; } imagedestroy($this->im); } /** * Save the code in the session * * @access private * */ function saveData() { $_SESSION['securimage_code_value'] = strtolower($this->code); } /** * Validate the code to the user code * * @access private * */ function validate() { if ( isset($_SESSION['securimage_code_value']) && !empty($_SESSION['securimage_code_value']) ) { if ( $_SESSION['securimage_code_value'] == strtolower(trim($this->code_entered)) ) { $this->correct_code = true; $_SESSION['securimage_code_value'] = ''; } else { $this->correct_code = false; } } else { $this->correct_code = false; } } /** * Check if the user entered code was correct * * @access private * @return boolean */ function checkCode() { return $this->correct_code; } } //end class ?> Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/ Share on other sites More sharing options...
darkfreaks Posted October 15, 2007 Share Posted October 15, 2007 ob_start(); Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370208 Share on other sites More sharing options...
lajollaig Posted October 15, 2007 Author Share Posted October 15, 2007 Ok, I read about that.. but what would be the code to put in? <? php obStart(); ?> Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370218 Share on other sites More sharing options...
darkfreaks Posted October 15, 2007 Share Posted October 15, 2007 but it before session start(); it should solve your problem Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370221 Share on other sites More sharing options...
trq Posted October 15, 2007 Share Posted October 15, 2007 Read this sticky. Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370223 Share on other sites More sharing options...
lajollaig Posted October 15, 2007 Author Share Posted October 15, 2007 Thorpe: Thats the sticky i read, but didnt understand where to put the code.. thanks... So, ok, Darkfreaks, I need to change this: function Securimage() { if ( session_id() == '' ) { // no session has been started yet, which is needed for validation session_start(); } } to THIS?: function Securimage() { if ( session_id() == '' ) { // no session has been started yet, which is needed for validation ob_start(); session_start(); } } Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370225 Share on other sites More sharing options...
darkfreaks Posted October 15, 2007 Share Posted October 15, 2007 yes that will output all buffering before the session starts Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370226 Share on other sites More sharing options...
trq Posted October 15, 2007 Share Posted October 15, 2007 Sorry, I didn't realise you'd read the sticky, just wanted to give you some reasoning as to why you get this error. Just put ob_start at the top of your script. yes that will output all buffering before the session starts Sorry, but that makes little sense. ob_start puts all your content into a buffer which is then sent in one go at the end of processing. This enables you to modify headers wherever you like because they are all sent together with the rest of the content. Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370227 Share on other sites More sharing options...
lajollaig Posted October 15, 2007 Author Share Posted October 15, 2007 Thank you Thorpe... So this is what I am having trouble understanding... I just need to put this: ob_start(); right after the <php? in the begining of the script.. to read as follows?: <?php ob_start(); /** * Project: Securimage: A PHP class for creating and managing form CAPTCHA images<br /> * File: securimage.php<br /> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version.<br /> * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details.<br /> * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br /> * * If you found this script useful, please take a quick moment to rate it.<br /> * http://www.hotscripts.com/rate/49400.html Thanks. * * @link http://www.NeoProgrammers.com NeoProgrammers * @link http://www.neoprogrammers.com/download.php?file=securimage.zip Download Latest Version * @link http://www.neoprogrammers.com/Securimage_Docs/ Online Documentation * @copyright 2007 Drew Phillips * @author drew010 <drew@drew-phillips.com> * @version 1.0 (June 21 2007) * @package Securimage * */ /** ChangeLog 1.0 - Added the ability to use a selected character set, rather than a-z0-9 only. - Added the multi-color text option to use different colors for each letter. - Switched to automatic session handling instead of using files for code storage - Added GD Font support if ttf support is not available. Can use internal GD fonts or load new ones. - Added the ability to set line thickness - Added option for drawing arced lines over letters - Added ability to choose image type for output - Removed file storage method */ /** * Output images in JPEG format */ define('SI_IMAGE_JPEG', 1); ................ and on and on Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370229 Share on other sites More sharing options...
trq Posted October 15, 2007 Share Posted October 15, 2007 Just put it at the top of your calling script! Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370233 Share on other sites More sharing options...
lajollaig Posted October 15, 2007 Author Share Posted October 15, 2007 LOL.. I am honestly sorry, I dont know what the calling script would be... I have: 1) index.php - the regular page with the include code in it to bring in the form.php script. 2) form.php which brings in the secureimage.php script (has the session_start(): in it) 3) secureimage.php Which one would it be? AND Thank you for your help thus far.... Much appreciated as I am very nw to PHP Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370238 Share on other sites More sharing options...
lajollaig Posted October 15, 2007 Author Share Posted October 15, 2007 I think i got it...! I added <?php ob_start();?> to the top of the index.php page and it seemed to work!!! Thank you both for your help today! Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370248 Share on other sites More sharing options...
darkfreaks Posted October 15, 2007 Share Posted October 15, 2007 your welcome cheers Quote Link to comment https://forums.phpfreaks.com/topic/73378-solved-need-help-with-session_start/#findComment-370252 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.