OK...if your error says you have output, then you have output. It's not lying to you. Your error was this:
> > > Warning: Cannot add header information - headers already sent by > > (output > > > started at /users/ppowell/web/my/process.php:5) in > > > /users/ppowell/web/my/process.php on line 76 Ok, that tells you that the "output started at ... /process.php:5", that means line 5, which is phpinfo(), which causes output to the browser... Lose that line... ---John Holmes... > -----Original Message----- > From: Phil Powell [mailto:[EMAIL PROTECTED]] > Sent: Saturday, September 28, 2002 9:16 PM > To: [EMAIL PROTECTED] > Subject: Re: [PHP] Help! Can't set cookie or redirect!!! > > Ok thanx.. yeah I knew that you can set a cookie before anything is set to > the browser, however, if you view my code, nothing is sent as output > before > the cookie is set. > > <? > // Don't forget you have to use php4.cgi to call this script and this > script's URL will be: > // /cgi-bin/cgiwrap/ppowell/php4.cgi/~ppowell/my/process.php > > phpinfo(); > $willChangeLayout = 1; $isEmptyLayoutValues = 1; > > $path = $DOCUMENT_ROOT . "/my/"; > > // SERVER-SIDE VALIDATION > foreach ($HTTP_POST_VARS as $key => $val) { > if (strcmp($key, "isDefaultLayout") == 0) $willChangeLayout = 0; > if (!empty($HTTP_POST_VARS[$key])) $isEmptyLayoutValues = 0; > if (!empty($HTTP_POST_FILES['myImage']['name'])) $isEmptyLayoutValues = > 0; > } > > if ($willChangeLayout && $isEmptyLayoutValues) { > header("Location: " . $refURL . "?errorMsg=" . urlencode("Please fill > out > all required fields")); > //--END OF SERVER-SIDE VALIDTION > } else { > > // FILE UPLOAD HANDLING > > if (!is_dir("$path/images/")) mkdir("$path/images/", 0755); > > if (is_uploaded_file($HTTP_POST_FILES['myImage']['tmp_name']) && > !file_exists("$DOCUMENT_ROOT/my/images/" . > $HTTP_POST_FILES['myImage']['name']) && > $willChangeLayout) > move_uploaded_file($HTTP_POST_FILES['myImage']['tmp_name'], $path. > "/images/" . urlencode($HTTP_POST_FILES['myImage']['name'])); > //--END OF FILE UPLOAD HANDLING > > > // IF LAYOUT COLORS HAVE BEEN SUBMITTED COMBINE THEM INTO WORKABLE > STRING > TO PLACE INTO FILE > if ($willChangeLayout) { > > $stuff = ""; > > // OPEN UP FILE "layout.txt" TO GET MOST CURRENT ID, ELSE DEFAULT TO 1 > if (file_exists("$path/layout.txt")) { > $layoutID = fopen("$path/layout.txt", "r") or die("Could not open > file: > $path/layout.txt"); > $stuff .= fread($layoutID, filesize("$path/layout.txt")); > fclose($layoutID) or die("Could not close file: $path/layout.txt"); > // OBTAIN MAX ID BY DOING PREG_MATCH_ALL TO GET ALL PATTERNS OF > "id=number" > preg_match_all("/id=[0-9]+/", $stuff, $idArray, PREG_PATTERN_ORDER); > list($key, $id) = split("=", end($idArray[0])); > $id++; > } else { > $id = 1; > } > > $layoutString = "id=" . $id . "&"; > > $varExceptionArray = array("isDefaultLayout", "submit", "refURL", > "previewButton", "cancel", > "MAX_FILE_SIZE"); > foreach ($HTTP_POST_VARS as $key => $val) { > if (!in_array($key, $varExceptionArray)) { > $val = preg_replace("/&/", "#", $val); // IN THEORY YOUR EXTERNAL > IMAGE HAS NO "&" > $val = preg_replace("/=/", "#", $val); // IN THEORY YOUR EXTERNAL > IMAGE HAS NO "=" > if (strcmp($key, "myExternalImage") == 0) { > $layoutString .= "background=" . urlencode($val) . "&"; > } else { > $layoutString .= $key . "=" . urlencode($val) . "&"; > } > } > } > > if (!empty($HTTP_POST_FILES['myImage']['name'])) { > $layoutString .= "background=" . > urlencode($HTTP_POST_FILES['myImage']['name']); > } else { > $layoutString = substr($layoutString, 0, -1); > } > $layoutID = fopen("$path/layout.txt", "w") or die("Could not write to > file: $path/layout.txt"); > fwrite($layoutID, $stuff . $layoutString . "\n"); > fflush($layoutID); fclose($layoutID); > // SET THE COOKIE FOR LAYOUT > setcookie("valLayout", $id, time()+3600*24*30*12*100, $SERVER_NAME); > // > WILL EXPIRE IN 100 YEARS.. UM YEAH > } else { // $willChangeLayout IS FALSE YOU ARE USING "isDefaultLayout" > - > DESTROY COOKIE > $id = $HTTP_COOKIE_VARS["valLayout"]; > if (empty($id)) $id = 0; > // DELETE ENTRY FROM layout.txt > $layoutID = fopen("$path/layout.txt", r) or die("Could not open file: > $path/layout.txt"); > $stuff = fread($layoutID, filesize("$path/layout.txt")); > fclose($layoutID) or die("Could not close file: $path/layout.txt"); > preg_match_all("/id=[\n]+\n/", $stuff, $idArray, PREG_PATTERN_ORDER); > preg_replace("end($idArray[0])", "", $stuff); > $layoutID = fopen("$path/layout.txt", w) or die("Could not open file: > $path/layout.txt"); > fwrite($layoutID, $stuff); fflush($layoutID); fclose($layoutID); > // DELETE COOKIE > setcookie("valLayout", "", time()-3600, $SERVER_NAME); > } > //--END OF LAYOUT COLOR TO WORKABLE STRING HANDLING > > // REDIRECT > header("Location: " . $HTTP_POST_VARS["refURL"]); > > } //--END OF LAYOUT CHANGING > ?> > > Perhaps I'm just not finding it. :( > > Phil > "John W. Holmes" <[EMAIL PROTECTED]> wrote in message > 000e01c26754$cf27c8c0$7c02a8c0@coconut">news:000e01c26754$cf27c8c0$7c02a8c0@coconut... > > You can only set a cookie before any output is send to the browser. A > > newline, space, or <html>, etc, is output to the browser. Redesign your > > code so the cookie is set before any output or use output buffering. > > > > ---John Holmes... > > > > > -----Original Message----- > > > From: Phil Powell [mailto:[EMAIL PROTECTED]] > > > Sent: Saturday, September 28, 2002 9:03 PM > > > To: [EMAIL PROTECTED]; [EMAIL PROTECTED] > > > Subject: [PHP] Help! Can't set cookie or redirect!!! > > > > > > I am getting the following errors attempting to set a cookie and > > redirect: > > > > > > Warning: Cannot add header information - headers already sent by > > (output > > > started at /users/ppowell/web/my/process.php:5) in > > > /users/ppowell/web/my/process.php on line 76 > > > > > > Warning: Cannot add header information - headers already sent by > > (output > > > started at /users/ppowell/web/my/process.php:5) in > > > /users/ppowell/web/my/process.php on line 77 > > > > > > > > > Lines: > > > > > > setcookie("valLayout", $id, time()+3600*24*30*12*100, > > $SERVER_NAME); // > > > WILL EXPIRE IN 100 YEARS.. UM YEAH > > > header("Location: " . $HTTP_POST_VARS["refURL"]); > > > > > > The first time I ran this script it set the cookie just fine; > > subsequent > > > runnings of this script produce this error. What am I doing wrong, > > > anyone? > > > > > > Thanx > > > Phil > > > > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php