programing

PHP로 WordPress 플러그인에서 텍스트 파일로 쓰기

codeshow 2023. 2. 26. 10:20
반응형

PHP로 WordPress 플러그인에서 텍스트 파일로 쓰기

WordPress 플러그인에서 텍스트 파일에 날짜를 쓰려고 합니다.이것은 단일 PHP 파일에서는 동작하지만 플러그인에 코드를 추가해도 쓰이지 않습니다.TXT 파일에 권한이 있습니다.777는 플러그인 파일과 같은 디렉토리에 있습니다.

내가 뭘 잘못하고 있지?

이것은 플러그인이며 추가한 라인은 블록에 있습니다.//log 404s to text file:

 <?php
 /*
 Plugin Name: Mail me 404 errors
 Plugin URI: http://me.com
 Description: A 404 status triggers an email with details.
 Version: 1.0
 Author: Me
 Author URI: http://me.com
 */
 //SENDS 404 EMAIL TO ADMIN


 function email_admin($location){   
     // ip address
     $ipaddress = $_SERVER['REMOTE_ADDR'];
     if (!empty($_SERVER['X_FORWARDED_FOR'])) {
         $X_FORWARDED_FOR = explode(',', $_SERVER['X_FORWARDED_FOR']);
     }
     elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
         $X_FORWARDED_FOR = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
     }
     else {$ipaddress = "undefined";}
     if (!empty($X_FORWARDED_FOR)) {
         $ipaddress = trim($X_FORWARDED_FOR[0]);
     }

     // site info
     $blname=get_option('blogname');
     $admemail = get_option('admin_email');
     $honeypot = "http://www.projecthoneypot.org/ip_".$ipaddress;

     // time log
     $time = date("F jS Y, H:i", time()+25200);

     //referrer
     function current_page_url(){
         $page_url = 'http';
         if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){
         $page_url .= 's';
     }
     return $page_url.'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
 }
 if(isset($_SESSION['referrer'])){
    $referrer = $_SESSION['referrer'];
 } elseif(isset($_SERVER['HTTP_REFERER'])){
    $referrer = $_SERVER['HTTP_REFERER'];
 } else {$referrer = "undefined";}
    $_SESSION['referrer'] = current_page_url();

 // query string
 if (isset($_SERVER['QUERY_STRING'])) { 
    $string = $_SERVER['QUERY_STRING']; 
 } else {
    $string = "undefined";
 }

 // request URI
 if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER["HTTP_HOST"])) {
    $request = 'http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
 } else {
    $request = "undefined";
 }

 // identity
 if (isset($_SERVER['REMOTE_IDENT'])) {
    $remote = $_SERVER['REMOTE_IDENT'];
 } else {
    $remote = "undefined";
 }

 // user agent
 if (isset($_SERVER['HTTP_USER_AGENT'])) {
    $agent = $_SERVER['HTTP_USER_AGENT'];
 } else {
    $agent = "undefined";
 }

 //log 404s to txt file
 $ipad = $_SERVER['REMOTE_ADDR'];
 $ban = "#$time\r\n$ipad\r\n"; 
 $file = "errors.txt"; 
 $open = @fopen($file, "a"); 
 $write = @fputs($open, $ban); 
 @fclose($open);
 //log 404s to txt file

 $mailhead = "MIME-Version: 1.0\r\n";
 $mailhead .= "Content-type: text/plain; charset=UTF-8\r\n";
 $mailhead .= 'From: "' . $blname . '" <' .$admemail. ">\r\n";
 $mailsubj= $blname.': 404 error';
 $mailintro = "Someone wanted to go to ".$request.", but it doesn't exist. Maybe you can have a look and see if anything needs to be fixed.\r\n";
 $mailbody=

    $mailintro . "\n" .

    "TIME: "            . $time    . "\n" . 
    "*404: "            . $request . "\n" . 
    "REFERRER: "        . $referer . "\n" . 
    "QUERY STRING: "    . $string  . "\n" . 
    "REMOTE ADDRESS: "  . $ipaddress . "\n" . 
    "REMOTE IDENTITY: " . $remote  . "\n" . 
    "USER AGENT: "      . $agent   . "\n" .
    "CHECK WHOIS: https://who.is/whois-ip/ip-address/". $ipaddress . "\n" .
    "CHECK IP ADDRESS: " . $honeypot . "\n\n\n";

 @mail($admemail,$mailsubj,$mailbody,$mailhead);
 }
 function mail_me_errors(){
    global $wp_query;
    $location=$_SERVER['REQUEST_URI'];
     if ($wp_query->is_404){
        email_admin($location);
     }
 }
 add_action('get_header', 'mail_me_errors');
 ?>

파일의 전체 경로 전달/wp-content/plugins/your-plugin/errors.txt로.fopen다음과 같이 설정합니다.

$file = plugin_dir_path( __FILE__ ) . '/errors.txt'; 
$open = fopen( $file, "a" ); 

다음은 최소한의 예입니다.

add_action( 'get_header', 'mail_me_errors' );

function mail_me_errors() {
    if ( is_404() ) {
        email_admin( $_SERVER['REQUEST_URI'] );
    }
}

function email_admin( $location ) {   
    $time = date( "F jS Y, H:i", time()+25200 );
    $ban = "#$time\r\n$location\r\n"; 
    $file = plugin_dir_path( __FILE__ ) . '/errors.txt'; 
    $open = fopen( $file, "a" ); 
    $write = fputs( $open, $ban ); 
    fclose( $open );
}

언급URL : https://stackoverflow.com/questions/25559913/write-from-wordpress-plugin-to-text-file-with-php

반응형