jquery js post variable set and get for post - javascript

I need to send some parameters from a php page to another to post email dynamically,
if I send the value as hardcoded is ok, but if i send the value on a textfield, it doesnt work,
here the code
page that request post of mail
<script>
$otroYa = other.val();
console.log (other.val()); //shows value ok of this var!
$.post( "send-mail-parklane-suscrib.php" , {otro: "ss9", otro2: $otroYa });
</script>
so,
otro2 = $otroYa
doesnt get set? , but hardcoding otro, is ok
php page called to perform post
<html>
<head><title>PHP Mail Sender</title></head>
<body>
<?php
session_start();
echo("chamb");
$to = 'juanma#gmail.com';
$from = 'bot#prklanefinancial.com.au';
$subject = 'Prklane Financial Subscribe';
$headers = 'From: bot#prklanefinancial.com.au' . "\r\n".
'Reply-To: test#abc.com'. "\r\n".
'Return-Path: test#abc.com' . "\r\n".
'X-Mailer: PHP/' . phpversion();
$message = "SS9 tkt ss9!!!";
$name=$_POST['otro2'];
mail($to, $subject, $name, $headers, "-f $from");
?>
</body>
</html>
so if I send my mail with the value
$name=$_POST['otro2'];
is empty
but using the hardcoded
$name=$_POST['otro'];
is ok
how to set the var?
thanks!

You mixed up PHP & JavaScript .
Instead of
$otroYa = other.val();
It should be:
var otroYa = other.val();
and the jquery post request should be:
$.post( "send-mail-parklane-suscrib.php" , {otro: "ss9", otro2: otroYa });

Related

Send Email using JavaScript & PHP

I am trying to send an email to myself using Ajax and PHP. The following seems to be sending the email but doesn't seem to pass the variables into PHP from Javascript.
JavaScript
var aaa = $('#aaa').val();
var bbb = $('#bbb').val();
var data = 'A: ' + aaa + ' B: ' + bbb;
$.ajax({
type: "POST",
url: "sendMail.php",
data: data,
success: function(){
alert("Email Sent");
}
});
PHP Code:
<?php
$subject = $_POST['data'];
mail("test#gmail.com", $subject, "", "From: info#test.com") or die("Error!");
?>
Could anyone please advise on how to fix this?
As pointed out in the comments your data variable in js is formatted the wrong way (it needs to be an object! ), you can use this one liner after defining data to convert it into the right format, as data:
data = { data: data };
this would make you not have to adjust the PHP code and populate the 'data' index in your $_POST superglobal with the string.
$to="123#gmail.com";
$subject="Work Done by ";
$subject .= $myusername;
$headers = 'From: 456#gmail.com' . "\r\n" .'X-Mailer: PHP/' . phpversion();
$messages ="test" ;
$messages .="test1" ;
$ret = mail($to, $subject, $messages, $headers);

HTML Form won't send email on submit

I've developed an iOS app and rails backend server. While I took some HTML classes back in university, it's been a long while since I've touched any.
I purchased a 'template' website to be my application landing page. I've tweaked it to be what I want, but I'm having 1 issue with the Contact/Form Submission page. When I press send, I do not receive an email at the intended email address. I'm not sure if this is an issue with the code (I'm guessing not, I would think this highly rated template would have had something like this correct), or if I need to set up something with my domain that I currently haven't done as I wouldn't know about it.
Here's the relevant code...
index.html
<form action="javascript:;" method="post">
...
<input type="submit" class="button white" value="Send →" />
</form>
send_email.php
<?php
// Replace this with your own email address
$to="example#gmail.com";
// Extract form contents
$name = $_POST['name'];
$email = $_POST['email'];
$website = $_POST['website'];
$subject = $_POST['subject'];
$message = $_POST['message'];
// Validate email address
function valid_email($str) {
return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*#([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}
// Return errors if present
$errors = "";
if($name =='') { $errors .= "name,"; }
if(valid_email($email)==FALSE) { $errors .= "email,"; }
if($message =='') { $errors .= "message,"; }
// Send email
if($errors =='') {
$headers = 'From: FluidApp <no-reply#fluidapp.com>'. "\r\n" .
'Reply-To: '.$email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$email_subject = "Website Contact Form: $email";
$message="Name: $name \n\nEmail: $email \n\nWebsite: $website \n\nSubject: $subject \n\nMessage:\n\n $message";
mail($to, $email_subject, $message, $headers);
echo "true";
} else {
echo $errors;
}
?>
However, nothing is being sent to my email "example#gmail.com".
What might I be missing here?
Maybe replace
<form action="javascript:;" method="post">
with
<form action="send_email.php" method="post">
That should do it, assuming the ... in your HTML snippet contains the right variables for the form submission- name, email, website, subject, message, etc.
EDIT: OP figured it out.
Place the <form action="send_email.php" method="post">
and remove <form action="javascript:;" method="post">
it will work perfect your send_email.php is good
place all 2 files in same folder

Post string variable to url after mail has been sent

i would really need your help. Am developing a contact/enquiry form in my website and will like the visitor to be redirected and to see their name in the thank you page after his request has been sent to my email.
I have a php processing the mail()function but i need to invoke a javascript or something similar to post his name string to the thank you page after the mail has been sent.
<?php
$field_name = $_POST['name'];
$field_dept = $_POST['department'];
$field_inquiry = $_POST['inquiry'];
$mail_to = 'customersupport#domain.com';
$field_contact = 'contactform#domain.com';
$subject = 'New Email Arrived '.$field_name;
$body_message .= 'name: '.$field_name."\n";
$body_message .= 'Department: '.$field_dept."\n";
$body_message .= 'Message: '.$field_inquiry."\n";
$headers = 'From: '.$field_contact."\r\n";
$headers .= 'Reply-To: '.$field_contact."\r\n";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
?>
I used to have this php code that redirects to the thank you page but it doesn't post the $field_name
if($mail_status) {header( "Location: thankyou.html" );} else {print "We encountered an error sending your mail"; }
Can any one help me with a replacement or JavaScript that will redirect and also post $field_name to the thankyou.html after the mail must have been sent by php.
The complete php/javascript coding will be appreciated. thanks
Just send the name via get url parameter:
header( "Location: thankyou.php?name={$field_name}" );
//thankyou.php
echo "hello" . $_GET['name'];

Call to undefined function wp_mail in a plugin

I am trying to make a plugin which lists all users from a database with for each user a button to send an email to them. So the only way I can get with their username their email adress is to use the $POST which is given after the button is clicked. With their username I can search the db table to retreive the email. The problem here is that the page will reload and the function wp_mail is called before the pluggable.php has loaded its functions.
Here is the post:
if ($_POST) {
sendEmail(current(array_keys($_POST)));
echo "<script type='text/javascript'>alert('Email is sent!')</script>";
}
And here is the function:
function sendEmail($username) {
global $wpdb;
$user = $wpdb->get_row("SELECT email, firstname from wp_site_users WHERE username ='" . $username ."'" , ARRAY_A);
$mail = $wpdb->get_row("SELECT * from wp_send_email WHERE id='1'", ARRAY_A);
$to = $user['email'];
$subject = 'Hello!';
$message = $mail['header'] . $user['firstname'] ."\n";
$message .= $mail['content'] . $username . "\n";
$message .= $mail['footer'];
$headers = 'From: '.'test#test.com'."\r\n";
echo $to . "<br>" . $subject . "<br>" . $message . "<br>" . $headers;
wp_mail($to, $subject, $message, $headers);
}
I've tried to add add_action( 'plugins_loaded', 'sendEmail' ); at the header but that doesn't seem to work.
Any ideas?
You are calling wp_mail before it's loaded..
Just include wp-load.php and go ahead!
require('../../../wp-load.php');
or
require('wp-load.php');
Depending how your script are loaded.
Call wp_mail after all of the necessary files are loaded:
add_action( 'plugins_loaded', 'plugins_load' );
function plugins_load() {
require MY_PLUGIN_PATH . '/includes/main.php';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail('youremail#gmail.com', 'Thank you', 'Message', $headers);
}

"Submit" button sends mail but doesn't redirect?

This script is driving me up the wall. It's a simple submission form. I click the "submit" button and the email with all the submitted information is generated perfectly fine.
But I can't get the button to then redirect me to the "Thank You" page.
I've tried PHP, I've tried Javascript, I've even tried good old fashioned Meta Redirect. Nothing works.
// 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);
header("location:http://amvleague.vitaminh.info/thankyou.html")
}
die();
?>
I've tried putting the "header" part at the top of the document. I've tried changing it to:
echo '<script>document.location="page2.html"; </script>';
I've generated so many emails with this script that gmail is now sending them all to spam. And I can't get the damn thing to redirect.
If anyone can help before I claw my eyes out, it would be much obliged. ^_^;;
EDIT: I've tried everything you've all suggested. It's as if the script just flat-out refuses to execute anything that comes after the mail command. Could there be a reason for this?
EDIT 2: Still nothing's working.
Here's the entire script (with Rolen Koh's modifications). Is there something hidden in here that is preventing the script from accessing anything that comes after the mail tag?
<?php
if(isset($_POST['email'])) {
$email_to = "pathos#vitaminh.info";
$email_subject = "BelleCON 2014 - AMV League Submission";
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['handle']) ||
!isset($_POST['amv_title']) ||
!isset($_POST['amv_song']) ||
!isset($_POST['amv_artist']) ||
!isset($_POST['amv_anime']) ||
!isset($_POST['amv_link']) ||
!isset($_POST['amv_category']) ||
!isset($_POST['email'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
function IsChecked($chkname,$value)
{
if(!empty($_POST[$chkname]))
{
foreach($_POST[$chkname] as $chkval)
{
if($chkval == $value)
{
return true;
}
}
}
return false;
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$handle = $_POST['handle']; // not required
$amv_title = $_POST['amv_title']; // required
$amv_song = $_POST['amv_song']; // required
$amv_artist = $_POST['amv_artist']; // required
$amv_anime = $_POST['amv_anime']; // required
$amv_link = $_POST['amv_link']; // required
$amv_category = $_POST['amv_category']; // required
$email_from = $_POST['email']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+#[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .-]+$/";
if(!preg_match($string_exp,$first_name)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= 'The Last Name 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 .= "Name: ".clean_string($first_name).clean_string($last_name)."\n";
$email_message .= "Handle: ".clean_string($handle)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Title of AMV: ".clean_string($amv_title)."\n";
$email_message .= "Category: ".clean_string($amv_category)."\n";
$email_message .= "Song: ".clean_string($amv_song)." by ".clean_string($amv_artist)."\n";
$email_message .= "Anime Used: ".clean_string($amv_anime)."\n\n";
$email_message .= clean_string($amv_link)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
$mail = mail($email_to, $email_subject, $email_message, $headers);
if($mail)
{
header("location:http://amvleague.vitaminh.info/thankyou.html");
}
}
}
?>
You can use the header() function to send a new HTTP header, but this must be sent to the browser before any HTML or text (so before the <!DOCTYPE ...> declaration, for example).
try this,this is what I am using
function redirect($url){
if (headers_sent()){
die('<script type="text/javascript">window.location.href="' . $url . '";</script>');
}else{
header('Location: ' . $url);
die();
}
}
Try this:
$mail = mail($email_to, $email_subject, $email_message, $headers);
if($mail)
{
header("location:http://amvleague.vitaminh.info/thankyou.html");
}
Also semi-colon is missing in your header("location:http://amvleague.vitaminh.info/thankyou.html") line but i guess it is typo error.
use location.href
echo '<script>window.location.href="page2.html"; </script>';
The window.location object can be written without the window prefix.
The line
header("location:http://amvleague.vitaminh.info/thankyou.html")
Needs to be
header("Location: http://amvleague.vitaminh.info/thankyou.html");
Note the capital "L", the space after the colon, and the semicolon at the end.
If this does not resolve your issue, then you have an issue in some other piece of code. To find it, you might try looking at the php error log. If you have access to the server, you can find this by using any of the following resources for your particular server.
http://www.cyberciti.biz/faq/error_log-defines-file-where-script-errors-logged/
Where does PHP store the error log? (php5, apache, fastcgi, cpanel)
Where can I find error log files?
If you are on a shared host, they might have some non-standard location for this file, in which case, it might be easiest to contact them and ask where their standard location of the php error log is.

Categories

Resources