我正在尝试从我自定义构建的联系表单的process.php中要求wp-blog-header.php。但如果我这样做,则不再发送消息。我尝试了固定和相对路径。唯一的区别是,使用固定网址,会返回成功消息,但无论如何消息都无法联系到我。这是process.php:
<?php if( isset($_POST) ){
require('http://www.bastards-design.de/sebastian/wp-blog-header.php');
//form validation vars
$formok = true;
$errors = array();
//sumbission data
$ipaddress = $_SERVER['REMOTE_ADDR'];
$date = date('d.m.Y');
$time = date('H:i');
//form data
$name = $_POST['name'];
$email = $_POST['email'];
$website = $_POST['website'];
$enquiry = $_POST['enquiry'];
$message = $_POST['message'];
$receiver = $_POST['receiver'];
$sender = "Niemand";// get_option('admin_email');
if(empty($name)){
$formok = false;
$errors[] = "Sie haben keinen Namen angegeben.";
}
if(empty($email)){
$formok = false;
$errors[] = "Sie haben keine Emailadresse angegeben.";
//validate email address
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$formok = false;
$errors[] = "Sie haben keine gültige Emailadresse angegeben.";
}
if(empty($message)){
$formok = false;
$errors[] = "Das Nachrichtenfeld ist leer.";
}
elseif(strlen($message) < 20){
$formok = false;
$errors[] = "Ihre Nachricht muss mindestens 20 Zeichen enthalten.";
}
if($formok){
$headers = "From: {$email}" . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$emailbody = "<p><strong>Name: </strong> {$name} </p>
<p><strong>Website: </strong> {$website} </p>
<p><strong>Nachricht: </strong> {$message} </p>
<p>Diese Nachricht wurde am {$date} um {$time} über {$sender} gesendet.</p>";
if($receiver){
mail($receiver,"Anfrage ".$name,$emailbody,$headers);
}
else{
mail('Sebastian.Starke1@googlemail.com',"Error",$emailbody,$headers);
}
}
//what we need to return back to our form
$returndata = array(
'posted_form_data' => array(
'name' => $name,
'email' => $email,
'website' => $website,
'enquiry' => $enquiry,
'message' => $message
),
'form_ok' => $formok,
'errors' => $errors
);
//if this is not an ajax request
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){
//set session variables
session_start();
$_SESSION['cf_returndata'] = $returndata;
//redirect back to form
header('location: ' . $_SERVER['HTTP_REFERER']);
}
}
答案 0 :(得分:2)
两者都期望服务器上的路径而不是URL。当您传递 http://www.bastards-design.de/sebastian/wp-blog-header.php 时,它将只包含脚本的输出,而不是根据需要评估PHP代码。
假设您显示的代码来自位于/var/www/bastards-design/script.php
服务器中的文件,而您要包含的文件位于/var/www/bastards-design/sebastian/wp-blog-header.php
,以下是您解决问题的方法:
require '/var/www/bastards-design/sebastian/wp-blog-header.php';
require 'sebastian/wp-blog-header.php';
答案 1 :(得分:1)
BE ,如果你想包含wordpress核心(+主题功能),对用户来说更好:
require('/wp-load.php');
而不是
require('/wp-blog-header.php');