Undefined Index Troubles... [Help Please] [message #26995] |
Wed, 24 August 2005 10:46 |
Linguistic
Messages: 3 Registered: August 2005 Location: Australia
Karma: 0
|
Junior Member |
|
|
I'm using a simple form using basic HTML and PHP. Everytime I run the script, I get this message "Notice: Undefined index: action in C:\Inetpub\habboresort\contact.php on line 49" I have no idea what is wrong with my script either. The code as follows: <?php
//Contact Script Made By Jordan Craig
//Define Variables
$your_email="liquid-crystal(at)hotmail(dot)com";
//Show Mail Form
function showForm(){
echo "<form name='contact' method='post' action='contact.php?action=sendEmail' onSubmit='return FormCheck()'>\n"
."<table width='40%' border='1' cellpadding='3' cellspacing='3' bordercolor='#000000' style='border-style: dashed;'>\n"
."<tr>\n"
."<td width='40%' bgcolor='#999999'><strong>Your Habbo Name: </strong><em>Please provide your real Habbo name.</em></td>\n"
."</tr><tr>\n"
."<td bgcolor='#CCCCCC'><input type='text' name='name' size='60'></td>\n"
."</tr><tr>\n"
."<td bgcolor='#999999'><strong>Your Email: </strong><em>Please provide a valid Email address.</em></td>\n"
."</tr><tr>\n"
."<td valign='top' bgcolor='#CCCCCC'><input type='text' name='email' size='60'></td>\n"
."</tr><tr>\n"
."<td valign='top' bgcolor='#999999'><strong>Subject: </strong><em>Please select the most relevant subject for your query.</em></td>\n"
."</tr><tr>\n"
."<td valign='top' bgcolor='#CCCCCC'><select name='subject' size='0'>
<option>Option Goes Here</option>
<option>Option Goes Here</option>
<option>Option Goes Here</option>
<option>Option Goes Here</option>
<option>Option Goes Here</option>
<option>Option Goes Here</option>
</select></td>\n"
."</tr><tr>\n"
."<td valign='top' bgcolor='#999999'><strong>Your Message: </strong><em>Please provide any additional information via this field.</em></td>\n"
."</tr><tr>\n"
."<td valign='top' bgcolor='#CCCCCC'><textarea name='message' rows='5' cols='45'></textarea></td>\n"
."</tr><tr>\n"
."<td align='right' valign='top' bgcolor='#999999'><input name='submit' type='submit' value='Submit Query'>\n<input name='reset' type='reset' value='Reset All Fields'></td>\n"
."</tr></table>\n";
}
//Send Email
function sendEmail(){
global $your_email,$name,$email,$subject,$message;
if ( !$name | !$email | !$subject | !$message ){
header ("Location: contact.php");
}else{
$email2 = "$email ($name)";
mail ( $your_email, $subject, $message, "From: $email2");
echo "<h1>Your query was successfully sent!</h1>\n"
."</head><body>\n";
}
}
//Switch Statement
switch ( $_GET['action'] ){
case 'sendEmail':
sendEmail();
break;
default:
showForm();
}
?> Any help would be much appreciated.
Null
|
|
|
|
Re: Undefined Index Troubles... [Help Please] [message #27004 is a reply to message #26995] |
Wed, 24 August 2005 13:31 |
Linguistic
Messages: 3 Registered: August 2005 Location: Australia
Karma: 0
|
Junior Member |
|
|
Yeah, now I am using //Switch Statement
if(array_key_exists('action', $_GET)){
switch ( $_GET['action'] ){
case 'sendEmail':
sendEmail();
break;
default:
showForm();
}
}else{
showForm();
} But now it seems I have a problem with it sending the form... The code shown when I press submit is: Warning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\habboresort\contact.php:16) in C:\Inetpub\habboresort\contact.php on line 124 I am stumped yet again.
Null
|
|
|
Re: Undefined Index Troubles... [Help Please] [message #31405 is a reply to message #27004] |
Fri, 21 April 2006 08:59 |
richardlynch
Messages: 8 Registered: April 2006
Karma: 0
|
Junior Member |
|
|
A minimal HTTP document from Server to Browser might look like:
---------------------- this line is not part of it ------------
200 Success
Content-type: text/html
Content-length: 4325
X-Powered-by: PHP
<html><body>Hello World</body></html>
---------------------- this line is not part of it ------------
Now, remember, this is going out piece by piece, line by line, letter by letter.
At any point in time, in slow-motion instant replay, maybe only SOME of the lines have gone from the server to the browser.
Look closely at the data above.
You see that blank line after the X-Powered-by: PHP and before the HTML tags?
*THAT* line is super crucial.
THAT line is a blank line, and the very first blank line indicates to the browser that the "headers" (those lines above the blank) are "done" and the HTML is about to start.
Now, you don't normally see the headers, though Firefox has a nifty plug-in to show them which you should get. You are using Firefox,right?
Anyway, here's the thing.
As soon as PHP has to send out some content -- some part of the HTML (like <html> usually) or even a blank line *before* your HTML, then it *has* to send all the headers out, and the blank line to indicate the END of the headers.
So what the error message is telling you is that on line 16 of your script, you printed/echo'ed something out, or you have a blank line, or you have an error message of some kind printing something out.
And when that happened, PHP sent all the headers, and then a blank line, and then started sending out your HTML (or blank lines or whatever you have on line 16).
Now, come line 124, you're trying to send a header out using the header function.
Only problem is, it's WAY too late.
The headers all got sent out at line 16, and PHP has already started sending content.
If line 16 is just a bad line or something, fix it and this problem goes away.
Otherwise, you can do one of two things:
1. The lazy, disorganized, quick, dirty solution is to turn on "output buffering" with http://php.net/ob_start (or in php.ini)
2. Re-arrange your code logically so that the HEADERS (which come oat the "head" of an HTTP stream, are all worked out at the tip-top of the document, and the actual HTML all comes later. This will make your code more organized and more logical, but requires actual thinking and work.
I always recommend #2, personally.
|
|
|
Re: Undefined Index Troubles... [Help Please] [message #31409 is a reply to message #26995] |
Fri, 21 April 2006 09:15 |
Linguistic
Messages: 3 Registered: August 2005 Location: Australia
Karma: 0
|
Junior Member |
|
|
Hi Richard!
Thank you very much for the extensive explanation of what was causing the problem. Although I had already fixed that problem by turning on output buffering, I was unsure of what was causing the problem. Thank you very much for enlightening me.
Kind regards,
Jordan
Null
|
|
|