要求wp-blog-header.php打破PHP

时间:2013-05-07 16:20:52

标签: php include contact

我正在尝试从我自定义构建的联系表单的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']);
        }
    }

2 个答案:

答案 0 :(得分:2)

  

PHP includerequire包含并评估指定的文件   路径。

两者都期望服务器上的路径而不是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');