scorponok Posted August 20, 2010 Share Posted August 20, 2010 hi, I need help really badly for my PHP-Postcard Script. Basically it sends the card out but the URL does not work, I get the following error message: The URL is not valid and cannot be loaded It also states that Notice: Undefined index: www.voluntary.awardspace.co.uk in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 25 Notice: Undefined index: Postcard.php in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 25 See Code below: <?php session_start(); //check error log ini_set('display_errors', 1); ini_set('log_errors', 1); ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); error_reporting(E_ALL); // CHANGE PARAMETERS HERE BEGIN $senderName = " Holidays From Home "; // Eg.: John's Postcards $senderEmail = "chris01@voluntary.awardspace.co.uk"; // Eg.: john@postcard.com // Change only if you have problems with urls $postcardURL = "http://".$_SERVER["www.voluntary.awardspace.co.uk"].$_SERVER["Postcard.php"]; // CHANGE PARAMETERS HERE END $result = 0; $msg = ""; $msg1 = ""; $pic = ""; function displayPhotos() { global $pic; $columns = 5; $act = 0; $act1 = 0; // Open the actual directory if($handle = opendir("thumbs")) { // Read all file from the actual directory while($file = readdir($handle)) { if(!is_dir($file)) { if(isset($pic[1])) { if($pic[1] == $act1){$sel = "checked";} else{$sel = "unchecked";} } if($act == 0){echo "<tr>";} echo "<td align='center'><img src='thumbs/$file' alt='postcard'/><br/><input type='radio' name='selimg' value='$file,$act1' $sel/></td>"; $act++; $act1++; if($act == $columns){$act = 0;echo "</tr>";} } } echo "</tr>"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html> <head> <title>Micro Postcard</title> <link href= "style/style.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="main"> <div class="style1" id="caption"> <div align="left" class="style1"></div> </div> <?php //makes sure form is correctly filled in if(!empty($_POST["submit"])) { if(empty($_POST["selimg"])){$msg = "Please select an image from above!";$result = 3;} else{$pic = explode(",",$_POST["selimg"]);} if(empty($_POST["email"]) && empty($result)){$msg1 = "You must enter an email address!";$result = 3;} $secCode = empty($_POST["secCode"]) ? "" : strtolower($_POST["secCode"]); if($secCode == $_SESSION["securityCode"] && $result != 3) { $filename = date("YmdGis"); $f = fopen("messages/".$filename.".txt","w+"); fwrite($f,$pic[0]."\n"); fwrite($f,$_POST['email']."\n"); fwrite($f,stripslashes($_POST["message"])."\n"); fclose($f); // Compose the mail $from = "From: $senderName <$senderEmail>\r\n"; $replay = "Reply-To: $senderEmail\r\n"; $params = "MIME-Version: 1.0\r\n"; $params .= "Content-type: text/plain; charset=iso-8859-1\r\n"; $mailtext = "You have just received a Virtual Postcard!\r\n\r\n You can pick up your postcard at the following web address:\r\n $postcardURL?show=$filename\r\n\r\n We hope you enjoy your postcard, and if you do, please take a moment to send a few yourself!\r\n\r\n Regards,\r\n Holidays From Home\r\n $postcardURL"; // Send email @mail($_POST["email"],"You've received a postcard",$mailtext,$from.$replay.$params); echo "<center> Your postcard was sent successfully!<br /><br /> <img src='images/$pic[0]' alt='postcard' /><br /><br /><br />".stripslashes($_POST["message"]). "</center>"; $result = 1; } else{if($result != 3){$result = 2;}} } if(!empty($_GET["show"])) { $file = $_GET["show"]; $content = file("messages/$file.txt"); $pic = $content[0]; unset($content[0]); unset($content[1]); foreach($content as $value){$main .= $value;} echo "<center> Your postcard!<br /><br /> <img src='images/$pic' alt='postcard' /><br /><br /><br />$main </center>"; } if((empty($result) || $result == 2 || $result == 3) && empty($_GET["show"])) { echo "<form action='#' method='post'> <table align='center'>"; displayPhotos(); echo "</table> <div style='color:#f00;font-size:16px;'>$msg</div> <h2>Fill in the Form and then click on Send Card!!</h2> <table width='100%'> <tr><td>Send to (email address):</td><td><div style='color:#f00;font-size:16px;'>$msg1</div><input type='text' name='email' size='30' value='".$_POST["email"]."' /></td></tr> <tr><td>Message:</td><td><textarea name='message' rows='10' cols='40'>".stripslashes($_POST["message"])."</textarea></td></tr> <tr><td colspan='2'>".($result == 2 ? "<p style='color:#f00;font-size:16px;'>Sorry the security code is invalid! Please try it again!</span></p>" : " ")."</tr> <tr> <td>Security code: <input class='text' name='secCode' type='text' size='10' /> </td><td><img src='securityCode.php' alt='security code' border='1' /></td> </tr> <tr><td colspan='2'> </tr> <tr><td colspan='2' align='left'><input type='submit' value='Send card!' name='submit'/></td></tr> </table> </form>"; } ?> Absolutely any help would be much appreciated. I want ot know is there a way round this problem? Here is the http://voluntary.awardspace.co.uk/Postcard.php I am absolutely desperate to solve this burning issue Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/ Share on other sites More sharing options...
Wolphie Posted August 20, 2010 Share Posted August 20, 2010 You're getting these errors because the key indexes you are using don't exist within the $_SERVER array. $postcardURL = "http://".$_SERVER["www.voluntary.awardspace.co.uk"].$_SERVER["Postcard.php"]; It should be: $postcardURL = 'http://www.voluntary.awardspace.co.uk/Postcard.php'; Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101566 Share on other sites More sharing options...
scorponok Posted August 20, 2010 Author Share Posted August 20, 2010 :'( No that unfortunately didn't work at all i get new error messages here: Notice: Undefined variable: sel in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 52 Notice: Undefined variable: sel in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 52 Notice: Undefined variable: sel in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 52 Notice: Undefined variable: sel in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 52 Notice: Undefined variable: sel in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 52 Notice: Undefined variable: sel in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 52 Notice: Undefined index: email in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 133 Notice: Undefined index: message in /home/www/voluntary.awardspace.co.uk/Postcard.php on line 134 I really am very confused by this Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101643 Share on other sites More sharing options...
trq Posted August 20, 2010 Share Posted August 20, 2010 Undefined indexes are a pretty simple error. The array index you are trying to access does not exist. Undefined variables are the same, you are accessing a variable that doesn't exist. Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101651 Share on other sites More sharing options...
scorponok Posted August 20, 2010 Author Share Posted August 20, 2010 well the probelm is they have been defined, $sel is to do with my thumbs images directory and is for users to pick images how would i then declare those variables? without adversely damaging the code, Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101655 Share on other sites More sharing options...
trq Posted August 20, 2010 Share Posted August 20, 2010 well the probelm is they have been defined, PHP says otherwise I'm afraid. Which are lines 52 and 133? Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101658 Share on other sites More sharing options...
kickstart Posted August 20, 2010 Share Posted August 20, 2010 Hi Suspect the variable it is complaining about is $file which is set up outside the function then utilised inside the function. As $file isn't declared as Global in the function it knows nothing about it. Suspect the indexes it complains about are the ones in the $_POST array, and if you go directly to this page you probably haven't passed a form in with these set, hence they are undefined. All the best Keith Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101659 Share on other sites More sharing options...
jcbones Posted August 20, 2010 Share Posted August 20, 2010 The problem with $sel is that it is only defined IF $pic[1] is defined, which it is NOT. $pic is defined as an empty string, and passed to the function via a global. Nowhere is $pic changed to an array, nor populated by anything. The email, and message indexes, are coming from the $_POST array. There is no check to make sure those variables are defined before working with them. Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101731 Share on other sites More sharing options...
scorponok Posted August 20, 2010 Author Share Posted August 20, 2010 I understand what you mean about $pic but I am unsure as to how to fix it here is line 52: echo "<td align='center'><img src='thumbs/$file' alt='postcard'/><br/><input type='radio' name='selimg' value='$file,$act1' $sel/></td>"; In that where would define $pic as a array? Line 134-5 <tr><td>Send to (email address):</td><td><div style='color:#f00;font-size:16px;'>$msg1</div><input type='text' name='email' size='30' value='".$_POST["email"]."' /></td></tr> <tr><td>Message:</td><td><textarea name='message' rows='10' cols='40'>".stripslashes($_POST["message"])."</textarea></td></tr> From that It looks to me like it is passing the data through but obviously not. Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101739 Share on other sites More sharing options...
jcbones Posted August 20, 2010 Share Posted August 20, 2010 You are defining $pic on line 19 as an empty string. Line 22: You are calling a global on $pic to include it into the function displayPhotos(); Line 34: Is the next time you are calling $pic. You are asking it if $pic[1] (array) is set <= which will fail everytime as $pic is an empty string. Line 36 & 37: defines $sel, as this if loop on $pic[1] will always fail due to $pic being an empty string, and not an array, then $sel will NOT be defined. Thus the errors. Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1101841 Share on other sites More sharing options...
scorponok Posted August 23, 2010 Author Share Posted August 23, 2010 ok... I see what you mean, but how do i fix it? Quote Link to comment https://forums.phpfreaks.com/topic/211267-php-postcard-notice-undefined-index-notice-undefined-variable-errors/#findComment-1102726 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.