https://fatgpt.com.tr/test/
şifre: 123456
Önce kayıtların tutulacağı veritabanı tablosunu oluşturmak için aşağıdaki sql kodunu phpmyadmin'den çalıştırın.
CREATE TABLE `wp_password_access_logs` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`post_id` bigint(20) NOT NULL,
`post_title` text NOT NULL,
`access_ip` varchar(100) NOT NULL,
`access_time` datetime NOT NULL,
`user_agent` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Ardından aşağıdaki php kodunu temanızın functions.php dosyasına koyun.
// Şifre korumalı sayfalar için giriş log sistemi
function custom_password_form() {
global $post;
$label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID );
$output = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" method="post" class="post-password-form">';
$output .= '<p>' . __( 'Bu içerik şifre korumalıdır. İçeriği görmek için lütfen şifreyi giriniz:' ) . '</p>';
$output .= '<p><label for="' . $label . '">' . __( 'Şifre:' ) . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label>';
// Kullanıcı IP adresi ve diğer bilgileri gizli alan olarak ekle
$output .= '<input type="hidden" name="access_ip" value="' . $_SERVER['REMOTE_ADDR'] . '">';
$output .= '<input type="hidden" name="access_time" value="' . current_time('mysql') . '">';
$output .= '<input type="hidden" name="post_id" value="' . $post->ID . '">';
$output .= ' <input type="submit" name="Submit" value="' . esc_attr__( "Giriş" ) . '" /></p></form>';
return $output;
}
add_filter('the_password_form', 'custom_password_form');
// Şifre girişini kontrol et ve log kaydet
function log_password_access() {
if (isset($_POST['post_password']) && !empty($_POST['post_password'])) {
$post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;
$access_ip = isset($_POST['access_ip']) ? sanitize_text_field($_POST['access_ip']) : $_SERVER['REMOTE_ADDR'];
$access_time = isset($_POST['access_time']) ? sanitize_text_field($_POST['access_time']) : current_time('mysql');
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
// Şifrenin doğru olup olmadığını kontrol et
$post = get_post($post_id);
if ($post && $post->post_password == $_POST['post_password']) {
// Şifre doğru, erişimi logla
$log_data = array(
'post_id' => $post_id,
'post_title' => get_the_title($post_id),
'access_ip' => $access_ip,
'access_time' => $access_time,
'user_agent' => $user_agent
);
// Log veritabanına kaydet
global $wpdb;
$table_name = $wpdb->prefix . 'password_access_logs';
$wpdb->insert($table_name, $log_data);
}
}
}
add_action('wp_loaded', 'log_password_access');
// Admin panele log görüntüleme sayfası ekle
function register_password_access_logs_page() {
add_menu_page(
'Şifreli Sayfa Erişim Logları',
'Şifre Logları',
'manage_options',
'password-access-logs',
'display_password_access_logs',
'dashicons-lock',
30
);
}
add_action('admin_menu', 'register_password_access_logs_page');
// Log gösterme fonksiyonu
function display_password_access_logs() {
global $wpdb;
$table_name = $wpdb->prefix . 'password_access_logs';
// Tüm logları al
$logs = $wpdb->get_results("SELECT * FROM $table_name ORDER BY access_time DESC", ARRAY_A);
echo '<div class="wrap">';
echo '<h1>Şifreli Sayfa Erişim Logları</h1>';
if (empty($logs)) {
echo '<p>Henüz kaydedilmiş log bulunmamaktadır.</p>';
} else {
echo '<table class="wp-list-table widefat fixed striped">';
echo '<thead><tr>';
echo '<th>ID</th>';
echo '<th>Sayfa</th>';
echo '<th>IP Adresi</th>';
echo '<th>Erişim Zamanı</th>';
echo '<th>Tarayıcı</th>';
echo '</tr></thead>';
echo '<tbody>';
foreach ($logs as $log) {
echo '<tr>';
echo '<td>' . esc_html($log['id']) . '</td>';
echo '<td>' . esc_html($log['post_title']) . ' (ID: ' . esc_html($log['post_id']) . ')</td>';
echo '<td>' . esc_html($log['access_ip']) . '</td>';
echo '<td>' . esc_html($log['access_time']) . '</td>';
echo '<td>' . esc_html($log['user_agent']) . '</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
}
echo '</div>';
}