반응형
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 |