RE: [PHP] Help! Can't set cookie or redirect!!!

2002-09-28 Thread John W. Holmes

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 . $lay

Re: [PHP] Help! Can't set cookie or redirect!!!

2002-09-28 Thread Phil Powell

Never mind, I found it.. *sigh* I forgot about phpinfo()..

Everything works now, cookies, redirection, everything.. thanx!

Phil
- Original Message -
From: "John W. Holmes" <[EMAIL PROTECTED]>
To: "'Phil Powell'" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>
Sent: Saturday, September 28, 2002 9:09 PM
Subject: RE: [PHP] Help! Can't set cookie or redirect!!!


> You can only set a cookie before any output is send to the browser. A
> newline, space, or , 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




Re: [PHP] Help! Can't set cookie or redirect!!!

2002-09-28 Thread Chris Shiflett

Phil Powell wrote:

>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.
>

Yes, there is. Look at the following line in your code:

>  phpinfo();
>

That comes prior to the setcookie() and header() functions, both of 
which manipulate HTTP headers.

Chris


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] Help! Can't set cookie or redirect!!!

2002-09-28 Thread Chris Shiflett

Phil,

You are sending output somewhere prior to the following line:

header("Location: " . $HTTP_POST_VARS["refURL"]);

Basically, as soon as you output anything, PHP has to assume you are 
finished manipulating headers.

Output can be anything from a space, newline, or HTML. It is not your 
setcookie() function but something that happens prior to that. Remember 
that everything not in PHP mode is considered output.

Chris

Phil Powell wrote:

>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?
>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] Help! Can't set cookie or redirect!!!

2002-09-28 Thread Phil Powell

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.

 $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 , 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/

RE: [PHP] Help! Can't set cookie or redirect!!!

2002-09-28 Thread John W. Holmes

You can only set a cookie before any output is send to the browser. A
newline, space, or , 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