【发布时间】:2023-03-15 22:22:01
【问题描述】:
我的第一个函数从 URL 中获取参数并设置 cookie:
编辑:
第一个函数在 WP 上的所有内容之前加载 并保存 cookie 并且在检查浏览器 cookie 时 - 它就在那里。它被保存了。
/**
Get variables from the URL and set them into the coockie
**/
add_action( 'init', 'set_utm_cookie');
function set_utm_cookie() {
global $utm;
if (getenv('HTTP_CLIENT_IP'))
$utm['ip'] = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$utm['ip'] = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$utm['ip'] = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$utm['ip'] = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$utm['ip'] = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$utm['ip'] = getenv('REMOTE_ADDR');
else
$utm['ip'] = 'UNKNOWN';
$utm = array(
'utm_source' => htmlspecialchars( $_GET["utm_source"]),
'utm_medium' => htmlspecialchars( $_GET["utm_medium"]),
'utm_term' => htmlspecialchars( $_GET["utm_term"]),
'utm_content' => htmlspecialchars( $_GET["utm_content"]),
'utm_campaign' => htmlspecialchars( $_GET["utm_content"]),
'ip' => $utm['ip']
);
if ( !isset($_COOKIE['utm_source']) ) {
setcookie('utm_source', $utm['utm_source'], time()+3600*60*24*7);
}
if ( !isset($_COOKIE['utm_medium']) ) {
setcookie('utm_medium', $utm['utm_medium'], time()+3600*60*24*7);
}
if ( !isset($_COOKIE['utm_term']) ) {
setcookie('utm_term', $utm['utm_term'], time()+3600*60*24*7);
}
if ( !isset($_COOKIE['utm_content']) ) {
setcookie('utm_content', $utm['utm_content'], time()+3600*60*24*7);
}
if ( !isset($_COOKIE['utm_campaign']) ) {
setcookie('utm_campaign', $utm['utm_campaign'], time()+3600*60*24*7);
}
if ( !isset($_COOKIE['ip']) ) {
setcookie('ip', $utm['ip'], time()+3600*60*24*7);
}
}
第二个功能是使用ajax激活的 每当用户提交联系表格时 - 它将输入发送到此函数并发送电子邮件。 如果发送了电子邮件(使用 wp_mail 功能 - 它发送相同的电子邮件,但使用我保存在 cookie 中的内容。)
当我收到电子邮件时 - 苦力输出的字段是空白的:X 除了 IP。我得到了IP。
/**
Contact form using Ajax
**/
add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form');
// Send information from the contact form
function submit_contact_form(){
// Get the UTM variables from the 'get_the_utm_vars()' function
//$utm = get_the_utm_vars();
// If there is a $_POST['email']...
if( isset($_POST['email']) && ($_POST['validation'] == true ) ) {
// Get parameters
$email = $_POST['email']; // Gets the email of the user..
$email_to = "arik@example.pro";
$walid = 'walid@example.pro';
$fullname = $_POST['fullname'];
$message = $_POST['text'];
$email_subject = "yellowHEAD Intro: $email";
$headers = array(
'From: '. $fullname .' <'. $email .'>',
'BCC: yonatan@example.pro',
'BCC: gal@example.pro',
'BCC: eran@example.pro',
'BCC: tova@example.pro',
'BCC: walid@example.pro',
'Content-type: text/html; charset=\"UTF-8\"; format=flowed \r\n'
);
// Send email to YH, and if sent - do:
if ( wp_mail($email_to,$email_subject,$message,$headers) ) {
// Tells me that the mail has been sent
echo json_encode( array("result"=>"complete") );
//Add the UTM variables to the emails text
$message .= "\r\n \r\n \r\n UTM Campaign: ".$_COOKIE['utm_campaign']." \r\n UTM Medium: ".$_COOKIE['utm_medium']." \r\n UTM Term: ".$_COOKIE['utm_term'] ."\r\n UTM Content: ".$_COOKIE['utm_content']." \r\n UTM Campaign: ".$_COOKIE['utm_campaign']." ";
// A mail for tova with the UTM paramseters
wp_mail($walid,$email_subject,$message);
// An automail for the user
//$message_responce = "Hi $fullname, \r\n Thanks for reaching out to us with your inquiry. We have received your e-mail and somebody from yellowHEAD will respond to you within one working day. \r\n In the meantime, feel free to connect with us through our Facebook or LinkedIn or to check out our professional blog. \r\n \r\n Talk to you soon. \r\n - The yellowHEAD Team";
//$header_responce = 'From: yellowHEADinc.com Team <info@exampleinc.com>';
//wp_mail($email,'yellowHEAD - Thanks For Your E-mail',$message_responce,$header_responce );
} else {
echo json_encode(array("result"=>"mail_error"));
var_dump($GLOBALS['phpmailer']->ErrorInfo);
}
wp_die();
}
}
如何正确地回显这些 cookie? 我几乎可以肯定有一些我不知道的基本知识可以解决所有问题:X
【问题讨论】:
-
您能确认正在设置 cookie 吗? (我个人喜欢 Firebugs Cookies 标签来检查这个getfirebug.com/cookies)
-
AJAX 是否运行在同一个域/协议上?
-
@tvgemert 是的。我第二次检查了使用萤火虫。是的。他们在同一个域中。
-
print_r($_COOKIE)带给你什么? -
@h2ooooooo 我在第一个函数中使用了
print_r($_COOKIE)- 我得到了所有的 cookie。我在第二个函数上使用了print_r($_COOKIE),得到了'0'。