How to implement javascript in PHP

Discussion in 'PHP' started by ProgMania, Jan 2, 2009.

  1. #1
    I would like to add the code:

    [COLOR="Blue"]<script language="javascript" type="text/javascript">
    alert('ERROR');
    history.go(-1);
    </script>[/COLOR]  
    Code (markup):
    into the red field. But it keeps giving me an error. How can I implement the javascript into the PHP code


    <?php
    if(isset($_POST['email'])) {
    	
    	// EDIT THE 2 LINES BELOW AS REQUIRED
    	$email_to = "you@yourdomain.com";
    	$email_subject = "Your email subject line";
    	
    	
    [COLOR="Red"]	function died($error) {
    		// your error code can go here
    		echo "We are very sorry, but there were error(s) found with the form your submitted. ";
    		echo "These errors appear below.<br /><br />";
    		echo $error."<br /><br />";
    		echo "Please go back and fix these errors.<br /><br />";
    		die();[/COLOR]
    	}
    	
    	// validation expected data exists
    	if(!isset($_POST['first_name']) ||
    		!isset($_POST['last_name']) ||
    		!isset($_POST['email']) ||
    		!isset($_POST['telephone']) ||
    		!isset($_POST['comments'])) {
    		died('We are sorry, but there appears to be a problem with the form your submitted.');		
    	}
    	
    	$first_name = $_POST['first_name']; // required
    	$last_name = $_POST['last_name']; // required
    	$email_from = $_POST['email']; // required
    	$telephone = $_POST['telephone']; // not required
    	$comments = $_POST['comments']; // required
    	
    	$error_message = "";
    	$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
      if(!eregi($email_exp,$email_from)) {
      	$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
      }
    	$string_exp = "^[a-z .'-]+$";
      if(!eregi($string_exp,$first_name)) {
      	$error_message .= 'The First Name you entered does not appear to be valid.<br />';
      }
      if(!eregi($string_exp,$last_name)) {
      	$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
      }
      if(strlen($comments) < 2) {
      	$error_message .= 'The Comments you entered do not appear to be valid.<br />';
      }
      $string_exp = "^[0-9 .-]+$";
      if(!eregi($string_exp,$telephone)) {
      	$error_message .= 'The Telphone Number you entered does not appear to be valid.<br />';
      }
      if(strlen($error_message) > 0) {
      	died($error_message);
      }
    	$email_message = "Form details below.\n\n";
    	
    	function clean_string($string) {
    	  $bad = array("content-type","bcc:","to:","cc:","href");
    	  return str_replace($bad,"",$string);
    	}
    	
    	$email_message .= "First Name: ".clean_string($first_name)."\n";
    	$email_message .= "Last Name: ".clean_string($last_name)."\n";
    	$email_message .= "Email: ".clean_string($email_from)."\n";
    	$email_message .= "Telephone: ".clean_string($telephone)."\n";
    	$email_message .= "Comments: ".clean_string($comments)."\n";
    	
    	
    // create email headers
    $headers = 'From: '.$email_from."\r\n".
    'Reply-To: '.$email_from."\r\n" .
    'X-Mailer: PHP/' . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);  
    ?>
    
    <!-- include your own success html here -->
    
    Thank you for contacting us. We will be in touch with you very soon.
    
    <?
    }
    ?>
    
    Code (markup):
     
    ProgMania, Jan 2, 2009 IP
  2. ProgMania

    ProgMania Active Member

    Messages:
    632
    Likes Received:
    37
    Best Answers:
    0
    Trophy Points:
    70
    #2
    solved. please close

    answer:

    ?> <script language="javascript" type="text/javascript">
    alert('ERROR');
    history.go(-1);
    </script> <?php
    Code (markup):
     
    ProgMania, Jan 2, 2009 IP
  3. zerxer

    zerxer Peon

    Messages:
    368
    Likes Received:
    18
    Best Answers:
    0
    Trophy Points:
    0
    #3
    I find opening and then closing the PHP tags to be easier when printing out a full block of HTML rather than doing multiple echo lines. Try this:

    <?php
    if(isset($_POST['email'])) {
    	
    	// EDIT THE 2 LINES BELOW AS REQUIRED
    	$email_to = "you@yourdomain.com";
    	$email_subject = "Your email subject line";
    	
    	
    	function died($error) {
    		// your error code can go here
    		?>We are very sorry, but there were error(s) found with the form your submitted. 
    		These errors appear below.<br /><br />
    		<?=$error?><br /><br />
    		Please go back and fix these errors.<br /><br />
    		<script language="javascript" type="text/javascript">
    			alert('ERROR');
    			history.go(-1);
    		</script><?
    		die();
    	}
    	
    	// validation expected data exists
    	if(!isset($_POST['first_name']) ||
    		!isset($_POST['last_name']) ||
    		!isset($_POST['email']) ||
    		!isset($_POST['telephone']) ||
    		!isset($_POST['comments'])) {
    		died('We are sorry, but there appears to be a problem with the form your submitted.');		
    	}
    	
    	$first_name = $_POST['first_name']; // required
    	$last_name = $_POST['last_name']; // required
    	$email_from = $_POST['email']; // required
    	$telephone = $_POST['telephone']; // not required
    	$comments = $_POST['comments']; // required
    	
    	$error_message = "";
    	$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
      if(!eregi($email_exp,$email_from)) {
      	$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
      }
    	$string_exp = "^[a-z .'-]+$";
      if(!eregi($string_exp,$first_name)) {
      	$error_message .= 'The First Name you entered does not appear to be valid.<br />';
      }
      if(!eregi($string_exp,$last_name)) {
      	$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
      }
      if(strlen($comments) < 2) {
      	$error_message .= 'The Comments you entered do not appear to be valid.<br />';
      }
      $string_exp = "^[0-9 .-]+$";
      if(!eregi($string_exp,$telephone)) {
      	$error_message .= 'The Telphone Number you entered does not appear to be valid.<br />';
      }
      if(strlen($error_message) > 0) {
      	died($error_message);
      }
    	$email_message = "Form details below.\n\n";
    	
    	function clean_string($string) {
    	  $bad = array("content-type","bcc:","to:","cc:","href");
    	  return str_replace($bad,"",$string);
    	}
    	
    	$email_message .= "First Name: ".clean_string($first_name)."\n";
    	$email_message .= "Last Name: ".clean_string($last_name)."\n";
    	$email_message .= "Email: ".clean_string($email_from)."\n";
    	$email_message .= "Telephone: ".clean_string($telephone)."\n";
    	$email_message .= "Comments: ".clean_string($comments)."\n";
    	
    	
    // create email headers
    $headers = 'From: '.$email_from."\r\n".
    'Reply-To: '.$email_from."\r\n" .
    'X-Mailer: PHP/' . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);  
    ?>
    
    <!-- include your own success html here -->
    
    Thank you for contacting us. We will be in touch with you very soon.
    
    <?
    }
    ?>
    PHP:
    I put the JavaScript code under the other text it prints out so the user can see that printed out before it gives the alert and takes them backwards. You can change this of course.


    EDIT: Whoops, looks like I was a minute or two too late.
     
    zerxer, Jan 2, 2009 IP
  4. ProgMania

    ProgMania Active Member

    Messages:
    632
    Likes Received:
    37
    Best Answers:
    0
    Trophy Points:
    70
    #4
    My other didnt work, it conflicts with rest of the code. Im trying yours now.

    EDIT: and yours do the same. When I actually try submitting email and filling the required fields it gives me an error.

    try yourself

    Whole code: http://www.freecontactform.com/email_form.php

    <form name="contactform" method="post" action="send_form_email.php">
    <table width="450px">
    </tr>
    <tr>
     <td valign="top">
      <label for="first_name">First Name *</label>
     </td>
     <td valign="top">
      <input  type="text" name="first_name" maxlength="50" size="30">
     </td>
    </tr>
    <tr>
     <td valign="top"">
      <label for="last_name">Last Name *</label>
     </td>
     <td valign="top">
      <input  type="text" name="last_name" maxlength="50" size="30">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="email">Email Address *</label>
     </td>
     <td valign="top">
      <input  type="text" name="email" maxlength="80" size="30">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="telephone">Telephone Number</label>
     </td>
     <td valign="top">
      <input  type="text" name="telephone" maxlength="30" size="30">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="comments">Comments *</label>
     </td>
     <td valign="top">
      <textarea  name="comments" maxlength="1000" cols="25" rows="6"></textarea>
     </td>
    </tr>
    <tr>
     <td colspan="2" style="text-align:center">
      <input type="submit" value="Submit">   <a href="http://www.freecontactform.com/email_form.php">Email Form</a>
     </td>
    </tr>
    </table>
    </form>
    
    Code (markup):
     
    ProgMania, Jan 2, 2009 IP
  5. manjifera

    manjifera Well-Known Member

    Messages:
    232
    Likes Received:
    4
    Best Answers:
    1
    Trophy Points:
    118
    #5
    if you are adding js inside php
    try to echo that value

    <?php
    
    
    echo "<script language=\"javascript\" type=\"text/javascript\">
    alert('ERROR');
    history.go(-1);
    </script>";
    
    ?>
    PHP:
    keep in mind to add back slash before commas.
     
    manjifera, Jan 3, 2009 IP
  6. itvn

    itvn Peon

    Messages:
    30
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #6
    You can use heredoc syntax:
    echo <<<EOD

    <script language="javascript" type="text/javascript">
    alert('ERROR');
    history.go(-1);
    </script>
    Your HTML, CSS, JavaScript...
    EOD;
    Note that you MUST NOT use any character after <<<EOD and before and after EOD;
     
    itvn, Jan 3, 2009 IP
  7. zerxer

    zerxer Peon

    Messages:
    368
    Likes Received:
    18
    Best Answers:
    0
    Trophy Points:
    0
    #7
    Why would you need to backslash commas? :p I do believe you mean double quotes.

    I don't know what you mean by "it conflicts" because I just tried the code and it works fine.. It outputs the error like it normally would and then takes them back to previous page after you hit OK on the alert..

    http://www.sitexero.net/test/

    Note that this one doesn't actually email anyone; I commented that out. Just put in an email address and hit submit to see it error. Page will be changed after you view it as that's my global testing area for problems that DP members have. :p

    @itvn: That's basically the same method I gave, only mine prints directly out. I don't like heredocs either since you can't make function calls in them. :(
     
    zerxer, Jan 3, 2009 IP
  8. ProgMania

    ProgMania Active Member

    Messages:
    632
    Likes Received:
    37
    Best Answers:
    0
    Trophy Points:
    70
    #8
    It conflicts like this:
    Yes it shows the error, but try sending a real mail, the error comes again and the mail will not be send.
     
    ProgMania, Jan 4, 2009 IP
  9. zerxer

    zerxer Peon

    Messages:
    368
    Likes Received:
    18
    Best Answers:
    0
    Trophy Points:
    0
    #9
    I don't know what you're talking about. It submits perfectly fine for me (other than requiring phone number still even though there's no asterisk next to it). Simply changing what and how the error handling function outputs cannot cause the error to trigger no matter what...

    <?php
    if(isset($_POST['email'])) {
    	
    	// EDIT THE 2 LINES BELOW AS REQUIRED
    	$email_to = "you@youremail.com";
    	$email_subject = "Your email subject line";
    	
    	
    	function died($error) {
    		// your error code can go here
    		?>We are very sorry, but there were error(s) found with the form your submitted. 
            These errors appear below.<br /><br />
            <?=$error?><br /><br />
            Please go back and fix these errors.<br /><br />
            <script language="javascript" type="text/javascript">
                alert('ERROR');
                history.go(-1);
            </script><?
    		die();
    	}
    	
    	// validation expected data exists
    	if(!isset($_POST['first_name']) ||
    		!isset($_POST['last_name']) ||
    		!isset($_POST['email']) ||
    		!isset($_POST['telephone']) ||
    		!isset($_POST['comments'])) {
    		died('We are sorry, but there appears to be a problem with the form your submitted.');		
    	}
    	
    	$first_name = $_POST['first_name']; // required
    	$last_name = $_POST['last_name']; // required
    	$email_from = $_POST['email']; // required
    	$telephone = $_POST['telephone']; // not required
    	$comments = $_POST['comments']; // required
    	
    	$error_message = "";
    	$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
      if(!eregi($email_exp,$email_from)) {
      	$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
      }
    	$string_exp = "^[a-z .'-]+$";
      if(!eregi($string_exp,$first_name)) {
      	$error_message .= 'The First Name you entered does not appear to be valid.<br />';
      }
      if(!eregi($string_exp,$last_name)) {
      	$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
      }
      if(strlen($comments) < 2) {
      	$error_message .= 'The Comments you entered do not appear to be valid.<br />';
      }
      $string_exp = "^[0-9 .-]+$";
      if(!eregi($string_exp,$telephone)) {
      	$error_message .= 'The Telphone Number you entered does not appear to be valid.<br />';
      }
      if(strlen($error_message) > 0) {
      	died($error_message);
      }
    	$email_message = "Form details below.\n\n";
    	
    	function clean_string($string) {
    	  $bad = array("content-type","bcc:","to:","cc:","href");
    	  return str_replace($bad,"",$string);
    	}
    	
    	$email_message .= "First Name: ".clean_string($first_name)."\n";
    	$email_message .= "Last Name: ".clean_string($last_name)."\n";
    	$email_message .= "Email: ".clean_string($email_from)."\n";
    	$email_message .= "Telephone: ".clean_string($telephone)."\n";
    	$email_message .= "Comments: ".clean_string($comments)."\n";
    	
    	
    // create email headers
    $headers = 'From: '.$email_from."\r\n".
    'Reply-To: '.$email_from."\r\n" .
    'X-Mailer: PHP/' . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);  
    ?>
    
    <!-- include your own success html here -->
    
    Thank you for contacting us. We will be in touch with you very soon.
    
    <?
    
    die();
    }
    ?>
    
    <form name="contactform" method="post" action="">
    <table width="450px">
    </tr>
    <tr>
     <td valign="top">
      <label for="first_name">First Name *</label>
     </td>
     <td valign="top">
      <input  type="text" name="first_name" maxlength="50" size="30">
     </td>
    </tr>
    <tr>
     <td valign="top"">
      <label for="last_name">Last Name *</label>
     </td>
     <td valign="top">
      <input  type="text" name="last_name" maxlength="50" size="30">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="email">Email Address *</label>
     </td>
     <td valign="top">
      <input  type="text" name="email" maxlength="80" size="30">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="telephone">Telephone Number</label>
     </td>
     <td valign="top">
      <input  type="text" name="telephone" maxlength="30" size="30">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="comments">Comments *</label>
     </td>
     <td valign="top">
      <textarea  name="comments" maxlength="1000" cols="25" rows="6"></textarea>
     </td>
    </tr>
    <tr>
     <td colspan="2" style="text-align:center">
      <input type="submit" value="Submit">   <a href="http://www.freecontactform.com/email_form.php">Email Form</a>
     </td>
    </tr>
    </table>
    </form>
    PHP:
    That works perfectly fine for me.
     
    zerxer, Jan 4, 2009 IP