Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
Ash, Ben, Thanks! For my web server, I can access to: ./httpdocs ./httpsdocs all the http documents are stored inside httpdocs and SSL documents inside httpsdocs. The web root you mean here is referred to ./httpdocs and ./httpsdocs or the parent directory of them? If I put the logfile inside ./log/logfile.txt where ./log is same level as ./httpdocs, can the web users access it? Thanks! Keith "Ashley Sheridan" wrote in message news:1251477059.27899.117.ca...@localhost... On Fri, 2009-08-28 at 09:28 -0700, Ben Dunlap wrote: > Which format should I used for log file? *.log or *.txt? Doesn't matter to PHP -- but you do need to provide a local path, not a URL. > [http://domain.com/log/logfile.*] or No... > [C:\some_path\domain.com\log\logfile.*] or just Yes! Ben You should try and put the log somewhere that is not in the web root, to prevent anyone from accessing it and getting information which could help a hack. Thanks, Ash http://www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
On Fri, 2009-08-28 at 09:28 -0700, Ben Dunlap wrote: > > Which format should I used for log file? *.log or *.txt? > > Doesn't matter to PHP -- but you do need to provide a local path, not a URL. > > > [http://domain.com/log/logfile.*] or > > No... > > > [C:\some_path\domain.com\log\logfile.*] or just > > Yes! > > Ben > You should try and put the log somewhere that is not in the web root, to prevent anyone from accessing it and getting information which could help a hack. Thanks, Ash http://www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
> Which format should I used for log file? *.log or *.txt? Doesn't matter to PHP -- but you do need to provide a local path, not a URL. > [http://domain.com/log/logfile.*] or No... > [C:\some_path\domain.com\log\logfile.*] or just Yes! Ben -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
2009/8/28 Martin Scotta : > On Fri, Aug 28, 2009 at 10:39 AM, Ashley Sheridan > wrote: > >> On Fri, 2009-08-28 at 10:34 -0300, Martin Scotta wrote: >> > Actually there aren't a safe way to make a redirect >> > >> > We have 4 alternatives (correct me if I miss anything) to do a safe >> > redirection. >> >> Erm wtf?! >> >> The best bet is always going with a header() redirect. The only time >> I've seen that fail is when the developer of the PHP script has made a >> mistake. The browser should always honor this type of redirect, and you >> have none of the issues with Javascript turned off, browser plugins >> blocking redirects, or stupid users etc. >> >> Thanks, >> Ash >> http://www.ashleysheridan.co.uk >> >> >> >> > What you are is truth if it only applies to computer browsers. > There are many "clients" where the Location header don't work. > > Curl is a good example, you can determine to follow the Redirect or just > skip it. > curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false) > > Another example could be mobile phones, especially wml based, do not follow > a redirection and you have to provide a "click here to redirect" link and > relies on the user to follow the redirection. > > Do not trust that your client is always a browser. It could be anything that > can open a connection and send a request. > > Also you can't know who is at the other side. The client can provide fake > UA, IP, everything... or can't send anything but the need to make a valid > request. In the realm of assumptions made by developers, that the client understands and will correctly process a 301/302 response is one of the safer assumptions. It's certainly safer than assuming the client will respect a meta tag or javascript. If you really try to deal with every possible client to that extent you'll never ship anything. Yes it's important to be as supportive as possible, but care should be taken to pick the battles that are worth fighting. -Stuart -- http://stut.net/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
On Fri, Aug 28, 2009 at 10:39 AM, Ashley Sheridan wrote: > On Fri, 2009-08-28 at 10:34 -0300, Martin Scotta wrote: > > Actually there aren't a safe way to make a redirect > > > > We have 4 alternatives (correct me if I miss anything) to do a safe > > redirection. > > Erm wtf?! > > The best bet is always going with a header() redirect. The only time > I've seen that fail is when the developer of the PHP script has made a > mistake. The browser should always honor this type of redirect, and you > have none of the issues with Javascript turned off, browser plugins > blocking redirects, or stupid users etc. > > Thanks, > Ash > http://www.ashleysheridan.co.uk > > > > What you are is truth if it only applies to computer browsers. There are many "clients" where the Location header don't work. Curl is a good example, you can determine to follow the Redirect or just skip it. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false) Another example could be mobile phones, especially wml based, do not follow a redirection and you have to provide a "click here to redirect" link and relies on the user to follow the redirection. Do not trust that your client is always a browser. It could be anything that can open a connection and send a request. Also you can't know who is at the other side. The client can provide fake UA, IP, everything... or can't send anything but the need to make a valid request. -- Martin Scotta
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
Hi all, Yes, you are right, it was due to echo for testing purpose not been commented out prior to header(). However, there is hidden root cause too -- PHPMailer will echo invalid address to the screen. When I have tested with 1 valid email address and 1 invalid with someth...@locahost, PHPMailer will echo out the invalid someth...@localhost. However, in this case, $mail->send() still will return value of TRUE as long as at least 1 email been sent out. After I have commented out all these [echo], no more header issue occur again. It's works too using Floyd's recommended javascript! However, the message will echoed out first before redirect to index.php, but this is fast enough to be neglectable. I have one more question regarding error logging. I have set as below: ini_set('log_errors', 1); ini_set('error_log', "http://domain.com/log/logfile.txt";); ini_set('error_reporting', 'E_ALL'); ini_set('error_append_string', '\r\n'); I have simulated an error which can be displayed on screen because I've put ini_set('display_errors',1). However, the error was not been logged. Which format should I used for log file? *.log or *.txt? Since I'm using third party web hosting, I can only access web directory, should I use [http://domain.com/log/logfile.*] or [C:\some_path\domain.com\log\logfile.*] or just [/log/logfile.*]? Thanks! Keith "Floyd Resler" wrote in message news:a536e452-54a2-4f55-8ae0-28e875a59...@adex-intl.com... Another solution would be to use JavaScript. In your process.php script you could do this: print<< window.location.href="index.php" here; Not strictly a PHP solution but it works. Take care, Floyd On Aug 28, 2009, at 5:34 AM, Ashley Sheridan wrote: On Fri, 2009-08-28 at 17:32 +0800, Keith wrote: I have a user sign up page that collects sign up information from user with form. This form will then be submitted to another process.php page for setting up the user account and send email to the user. After the email been sent out, the user will be directed back to homepage with header("location: index.php"). However, error happen with warning: [Cannot modify header information - headers already sent by...] Any workaround for this? Thanks for help! Keith You don't need a workaround. The header("Location...") thing will only work if you have not sent any content to the browser yet. That includes even a single space or newline. It looks like in your process.php page, something is being output to the browser. Are you able to do a code dump of that page? Thanks, Ash http://www.ashleysheridan.co.uk -- 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
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
On Fri, 2009-08-28 at 10:34 -0300, Martin Scotta wrote: > Actually there aren't a safe way to make a redirect > > We have 4 alternatives (correct me if I miss anything) to do a safe > redirection. Erm wtf?! The best bet is always going with a header() redirect. The only time I've seen that fail is when the developer of the PHP script has made a mistake. The browser should always honor this type of redirect, and you have none of the issues with Javascript turned off, browser plugins blocking redirects, or stupid users etc. Thanks, Ash http://www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
On Fri, Aug 28, 2009 at 9:36 AM, Floyd Resler wrote: > Another solution would be to use JavaScript. In your process.php script > you could do this: > print<< >window.location.href="index.php" > > here; > > Not strictly a PHP solution but it works. > > Take care, > Floyd > > > On Aug 28, 2009, at 5:34 AM, Ashley Sheridan wrote: > > On Fri, 2009-08-28 at 17:32 +0800, Keith wrote: >> >>> I have a user sign up page that collects sign up information from user >>> with >>> form. >>> This form will then be submitted to another process.php page for setting >>> up >>> the user account and send email to the user. >>> After the email been sent out, the user will be directed back to homepage >>> with header("location: index.php"). >>> However, error happen with warning: [Cannot modify header information - >>> headers already sent by...] >>> Any workaround for this? >>> >>> Thanks for help! >>> Keith >>> >>> >>> >>> >> You don't need a workaround. The header("Location...") thing will only >> work if you have not sent any content to the browser yet. That includes >> even a single space or newline. >> >> It looks like in your process.php page, something is being output to the >> browser. Are you able to do a code dump of that page? >> >> Thanks, >> Ash >> http://www.ashleysheridan.co.uk >> >> >> >> >> -- >> 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 > > Actually there aren't a safe way to make a redirect. Every technique relies on the client-side to perform the redirection. We have 4 alternatives (correct me if I miss anything) to do a safe redirection. 1. header Location 2. meta tag refresh 3. javascript 4. the user We will try every one in the given order... Let's suppose we want to redirect the client to $url... Redirecting... /*'; /*]]>*/ You are about to be redirected to in 2 seconds Click here if your browser do not redirect automatically It's recommended that your use a common redirect method in your site, this is not mandatory but it is a good practice. This simple script also helps to prevent session problems under some evil web-server by closing the session before any output. -- Martin Scotta
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
Another solution would be to use JavaScript. In your process.php script you could do this: print<< window.location.href="index.php" here; Not strictly a PHP solution but it works. Take care, Floyd On Aug 28, 2009, at 5:34 AM, Ashley Sheridan wrote: On Fri, 2009-08-28 at 17:32 +0800, Keith wrote: I have a user sign up page that collects sign up information from user with form. This form will then be submitted to another process.php page for setting up the user account and send email to the user. After the email been sent out, the user will be directed back to homepage with header("location: index.php"). However, error happen with warning: [Cannot modify header information - headers already sent by...] Any workaround for this? Thanks for help! Keith You don't need a workaround. The header("Location...") thing will only work if you have not sent any content to the browser yet. That includes even a single space or newline. It looks like in your process.php page, something is being output to the browser. Are you able to do a code dump of that page? Thanks, Ash http://www.ashleysheridan.co.uk -- 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
[PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
I have a user sign up page that collects sign up information from user with form. This form will then be submitted to another process.php page for setting up the user account and send email to the user. After the email been sent out, the user will be directed back to homepage with header("location: index.php"). However, error happen with warning: [Cannot modify header information - headers already sent by...] Any workaround for this? Thanks for help! Keith -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
Some Php's tigger info output to client before you set header.try this code first --- ob_start();//first line write this code <<>> header("location:index.php"); ob_end_flush(); --- second. You must check php.ini found that if flush implicit option turn on. implicit_flush = On => implicit_flush = Off test your codes again. If codes run correctly,check your codes line by lines ,found that such as 'echo','print'... and so on before 'you header("location:index.php")' line. 2009/8/28 Keith : > I have a user sign up page that collects sign up information from user with > form. > This form will then be submitted to another process.php page for setting up > the user account and send email to the user. > After the email been sent out, the user will be directed back to homepage > with header("location: index.php"). > However, error happen with warning: [Cannot modify header information - > headers already sent by...] > Any workaround for this? > > Thanks for help! > Keith > > > > -- > 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
Re: [PHP] Error when execute header('location: otherpage.php') after email been sent out. Any Workaround?
On Fri, 2009-08-28 at 17:32 +0800, Keith wrote: > I have a user sign up page that collects sign up information from user with > form. > This form will then be submitted to another process.php page for setting up > the user account and send email to the user. > After the email been sent out, the user will be directed back to homepage > with header("location: index.php"). > However, error happen with warning: [Cannot modify header information - > headers already sent by...] > Any workaround for this? > > Thanks for help! > Keith > > > You don't need a workaround. The header("Location...") thing will only work if you have not sent any content to the browser yet. That includes even a single space or newline. It looks like in your process.php page, something is being output to the browser. Are you able to do a code dump of that page? Thanks, Ash http://www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php