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

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • norwichchris
    New Member
    • Aug 2010
    • 2

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

    hi, I am having serious trouble with my PHP Postcard script. The error message i get is:

    Notice: Undefined index:
    Notice: Undefined variable

    Basically it does not send out the scripts at all. It is hosted on Awardspace.
    Code:
    <?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[""].$_SERVER[""]; //problem is definetely here!!!
    // 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>" : "&nbsp;")."</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'>&nbsp;</tr>
              <tr><td colspan='2' align='left'><input type='submit' value='Send card!' name='submit'/></td></tr>
             </table>
            </form>";
      }
    ?>
    Any help would be much appreciated
  • JKing
    Recognized Expert Top Contributor
    • Jun 2007
    • 1206

    #2
    Code:
    $postcardURL = "http://".$_SERVER[""].$_SERVER[""]; //problem is definetely here!!!
    $_SERVER is an array of variables. You are using a blank index which results in the undefined index and variable.

    It should look something like $_SERVER['SERVER_NAME'] but without knowing where you want to send the users I cannot direct you much further.

    Here is some more info on the $_SERVER variablePHP $_SERVER

    Comment

    • norwichchris
      New Member
      • Aug 2010
      • 2

      #3
      Here is the URL script. IT is supposed to send an email with a hyperlink and then the reciepient can opne the link to view the card.

      see link below:


      Thx!

      Comment

      Working...