Jump to content

embedding phpside of php


bluethundr

Recommended Posts

Hello,

 

I am trying to get the hang of php using some examples that I found in a book. I've been making progress lately, but one thing has me a bit stumped.

 

 

In an HTML form that I am echoing through PHP I would like to embed smaller chunks of php in the code like so:

 

echo '<br /><br />
        <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <label for="subject">Subject of email:</label><br />
        <input id="subject" name="subject" type="text" value="<?php echo $subject;?>"><br />
        <label for="elvismail">Body of email:</label><br />
        <textarea id="elvismail" name="elvismail" rows="8" cols="40">"<?php echo $text;?>"       </textarea><br />
        <input type="submit" name="Submit" value="Submit" />
        </form>';

 

 

If I do embed the smaller chunks of php in the form the way I've just shown you the script instantly breaks and the web page shows only a white screen of death.

 

And I see this in the web server logs

[sat Jun 30 19:12:54 2012] [notice] child pid 7769 exit signal Segmentation fault (11)

 

If I remove the smaller bits of php as I show here the web page starts working again

 

echo '<br /><br />
        <form method="post" action="sendemail.php">
        <label for="subject">Subject of email:</label><br />
        <input id="subject" name="subject" type="text"><br />
        <label for="elvismail">Body of email:</label><br />
        <textarea id="elvismail" name="elvismail" rows="8" cols="40"></textarea><br />
        <input type="submit" name="Submit" value="Submit" />
        </form>';

 

Here, I'll show the entire script so you can get a better sense of what it does

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Make Me Elvis - Send Email</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
  <img src="blankface.jpg" width="161" height="350" alt="" style="float:right" />
  <img name="elvislogo" src="elvislogo.gif" width="229" height="32" border="0" alt="Make Me Elvis" />
  <p><strong>Private:</strong> For Elmer's use ONLY<br /><br 
  Write and send an email to mailing list members.</p>

<?php

  error_reporting(E_ALL);
  ini_set('display_errors', 'On');

   if (isset($_POST['Submit'])) {
  
     $from = '[email protected]';
     $subject = $_POST['subject'];
     $text = $_POST['elvismail'];
     $output_form = "false";
   
     if (empty($subject) && empty($text)) {
     echo 'You forgot the email subject and body.<br />';
     $output_form = 'true';  
  
    }
  
  
     if (empty($subject) && !empty($text)) {
     echo 'You forgot the email subject.<br />';
     $output_form="true";
  
    }
  
    if ((!empty($subject)) && empty($text)) {
  
    echo 'You forgot the email body text.<br />';
    $output_form="true";
    
  
    }
    
}  else { 

      $output_form = 'true';
      
   }

  
  
   if ($output_form == 'true') {
   

  echo '<br /><br />
        <form method="post" action="sendemail.php">
        <label for="subject">Subject of email:</label><br />
        <input id="subject" name="subject" type="text"><br />
        <label for="elvismail">Body of email:</label><br />
        <textarea id="elvismail" name="elvismail" rows="8" cols="40"></textarea><br />
        <input type="submit" name="Submit" value="Submit" />
        </form>';
        
  
  } else {

  $dbc = mysqli_connect('127.0.0.1', 'admin', 'secret

', 'elvis_store')
    or die('Error connecting to MySQL server.');

  $query = "SELECT * FROM email_list";
  $result = mysqli_query($dbc, $query)
    or die('Error querying database.');

  while ($row = mysqli_fetch_array($result)){
    $to = $row['email'];
    $first_name = $row['first_name'];
    $last_name = $row['last_name'];
    $msg = "Dear $first_name $last_name,\n$text";
    mail($to, $subject, $msg, 'From:' . $from);
    echo 'Email sent to: ' . $to . '<br />';
  } 

  mysqli_close($dbc);
  
}  
  
  
?>

</body>
</html>

 

I was hoping that someone might be out there that could understand this problem and point out where I'm going wrong.

 

Thanks!

Link to comment
https://forums.phpfreaks.com/topic/265060-embedding-phpside-of-php/
Share on other sites

echo '<br /><br />
        <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

 

should be:

 

echo '<br /><br />
        <form method="post" action="' . $_SERVER['PHP_SELF'] . '">

 

..and the same for the other PHP you've used.

 

Also, it might be worth searching on Google for the 'dangers of PHP_SELF' or something like that, as it's not the best way to do it.

You are trying to issue an opening <?php tag without closing the previously opened <?php tag. I've never seen it cause that particular error, though.

 

http://www.php.net/manual/en/language.basic-syntax.php

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.