반응형
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
반응형
'programing' 카테고리의 다른 글
React에서 증분 연산자를 사용하는 방법 (0) | 2023.02.26 |
---|---|
React-Router - Uncaught TypeError: 정의되지 않은 속성 'getCurrentLocation'을 읽을 수 없습니다. (0) | 2023.02.26 |
키보드 회피 Scroll View를 사용한 표시 회피 (0) | 2023.02.26 |
jQuery: 동기 AJAX 요청 수행 중 (0) | 2023.02.26 |
WordPress에서 게시 날짜를 얻으려면 어떻게 해야 합니까? (0) | 2023.02.26 |