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 = "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  :(

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

:'(

 

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:

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

 

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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