Jump to content

PHP Postcard Notice: Undefined index: Notice: Undefined variable errors


scorponok

Recommended Posts

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 = "[email protected]";  // Eg.: [email protected]
// 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  :(

 

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';

:'(

 

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 :shrug:

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

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.

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.

 

 

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.

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.