/** * HKS Landing Page Plugin - Dynamic & Secure * * @package HKS_Landing * @version 2.0.0 * @author Hakan Hoca * * Security Features: * - CSRF Protection (WordPress Nonces) * - SQL Injection Prevention (Prepared Statements) * - XSS Protection (Data Sanitization) * - Rate Limiting * - Honeypot Field * - IP Logging * * Clean Code: * - PSR-12 Standards * - Single Responsibility Principle * - DRY (Don't Repeat Yourself) * - Modular Architecture */ /* Plugin Name: HKS Landing Page Dynamic Description: Dinamik, güvenli ve clean code ile yazılmış landing page sistemi Version: 2.0.0 Author: Hakan Hoca Text Domain: hks-landing */ if (!defined('ABSPATH')) { exit; // Doğrudan erişimi engelle } /** * Main Plugin Class */ class HKS_Landing_Plugin { /** * Plugin version */ private const VERSION = '2.0.0'; /** * Database table name */ private const TABLE_NAME = 'hks_applications'; /** * Nonce action */ private const NONCE_ACTION = 'hks_form_submit'; /** * Rate limit: max submissions per IP per hour */ private const RATE_LIMIT = 5; /** * Singleton instance */ private static $instance = null; /** * Get singleton instance */ public static function get_instance() { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; } /** * Constructor */ private function __construct() { $this->init_hooks(); } /** * Initialize WordPress hooks */ private function init_hooks() { register_activation_hook(__FILE__, [$this, 'activate']); register_deactivation_hook(__FILE__, [$this, 'deactivate']); add_action('wp_ajax_hks_submit_form', [$this, 'handle_form_submission']); add_action('wp_ajax_nopriv_hks_submit_form', [$this, 'handle_form_submission']); add_action('admin_menu', [$this, 'add_admin_menu']); add_action('wp_enqueue_scripts', [$this, 'enqueue_scripts']); add_shortcode('hks_landing', [$this, 'render_landing_page']); } /** * Plugin activation */ public function activate() { $this->create_database_table(); $this->set_default_options(); flush_rewrite_rules(); } /** * Plugin deactivation */ public function deactivate() { flush_rewrite_rules(); } /** * Create database table */ private function create_database_table() { global $wpdb; $table_name = $wpdb->prefix . self::TABLE_NAME; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE IF NOT EXISTS {$table_name} ( id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, phone varchar(50) NOT NULL, exam varchar(50) NOT NULL, field varchar(50) NOT NULL, target_score int(3) NOT NULL, daily_hours decimal(3,1) NOT NULL, message text, ip_address varchar(45) NOT NULL, user_agent text, status varchar(20) DEFAULT 'pending', created_at datetime DEFAULT CURRENT_TIMESTAMP, updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY ip_address (ip_address), KEY created_at (created_at), KEY status (status) ) {$charset_collate};"; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; dbDelta($sql); } /** * Set default options */ private function set_default_options() { $defaults = [ 'hks_whatsapp_number' => '905052991316', 'hks_enable_notifications' => '1', 'hks_notification_email' => get_option('admin_email'), 'hks_recaptcha_site_key' => '', 'hks_recaptcha_secret_key' => '', ]; foreach ($defaults as $key => $value) { if (get_option($key) === false) { add_option($key, $value); } } } /** * Handle form submission via AJAX */ public function handle_form_submission() { try { // Security: Verify nonce if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], self::NONCE_ACTION)) { throw new Exception('Güvenlik doğrulaması başarısız.'); } // Security: Check honeypot if (!empty($_POST['website'])) { throw new Exception('Bot tespit edildi.'); } // Security: Verify reCAPTCHA v3 if configured $this->verify_recaptcha_token($_POST['recaptcha_token'] ?? ''); // Security: Rate limiting $this->check_rate_limit(); // Validate and sanitize input $data = $this->validate_and_sanitize_input($_POST); // Save to database $application_id = $this->save_application($data); // Send notification $this->send_notification($data, $application_id); // Success response wp_send_json_success([ 'message' => 'Başvurunuz alındı! En kısa sürede WhatsApp\'tan dönüş yapacağım.', 'application_id' => $application_id, ]); } catch (Exception $e) { // Error response wp_send_json_error([ 'message' => $e->getMessage(), ]); } } /** * Check rate limit */ private function check_rate_limit() { global $wpdb; $ip = $this->get_client_ip(); $table_name = $wpdb->prefix . self::TABLE_NAME; $one_hour_ago = date('Y-m-d H:i:s', strtotime('-1 hour')); $count = $wpdb->get_var($wpdb->prepare( "SELECT COUNT(*) FROM {$table_name} WHERE ip_address = %s AND created_at > %s", $ip, $one_hour_ago )); if ($count >= self::RATE_LIMIT) { throw new Exception('Çok fazla başvuru yaptınız. Lütfen 1 saat sonra tekrar deneyin.'); } } /** * Validate and sanitize input */ private function validate_and_sanitize_input($post_data) { $data = []; // Name validation if (empty($post_data['name'])) { throw new Exception('Ad Soyad alanı zorunludur.'); } $data['name'] = sanitize_text_field($post_data['name']); // Phone validation if (empty($post_data['phone'])) { throw new Exception('Telefon alanı zorunludur.'); } $phone = sanitize_text_field($post_data['phone']); if (!preg_match('/^[0-9\s\+\-\(\)]+$/', $phone)) { throw new Exception('Geçersiz telefon numarası.'); } $data['phone'] = $phone; // Exam validation if (empty($post_data['exam']) || !in_array($post_data['exam'], ['yokdil', 'yds'])) { throw new Exception('Geçersiz sınav seçimi.'); } $data['exam'] = sanitize_text_field($post_data['exam']); // Field validation if (empty($post_data['field']) || !in_array($post_data['field'], ['saglik', 'fen', 'sosyal'])) { throw new Exception('Geçersiz alan seçimi.'); } $data['field'] = sanitize_text_field($post_data['field']); // Target score validation $target = intval($post_data['target']); if ($target < 50 || $target > 100) { throw new Exception('Hedef puan 50-100 arasında olmalıdır.'); } $data['target_score'] = $target; // Daily hours validation $daily = floatval($post_data['daily']); if ($daily < 1 || $daily > 10) { throw new Exception('Günlük çalışma süresi 1-10 saat arasında olmalıdır.'); } $data['daily_hours'] = $daily; // Message (optional) $data['message'] = !empty($post_data['message']) ? sanitize_textarea_field($post_data['message']) : ''; // Additional data $data['ip_address'] = $this->get_client_ip(); $data['user_agent'] = sanitize_text_field($_SERVER['HTTP_USER_AGENT'] ?? ''); return $data; } /** * Save application to database */ private function save_application($data) { global $wpdb; $table_name = $wpdb->prefix . self::TABLE_NAME; $result = $wpdb->insert( $table_name, $data, [ '%s', // name '%s', // phone '%s', // exam '%s', // field '%d', // target_score '%f', // daily_hours '%s', // message '%s', // ip_address '%s', // user_agent ] ); if ($result === false) { throw new Exception('Veritabanı hatası. Lütfen tekrar deneyin.'); } return $wpdb->insert_id; } /** * Send notification email */ private function send_notification($data, $application_id) { if (get_option('hks_enable_notifications') !== '1') { return; } $to = get_option('hks_notification_email'); $subject = 'Yeni HKS Başvurusu - ' . $data['name']; $message = "Yeni bir başvuru alındı:\n\n"; $message .= "Başvuru ID: {$application_id}\n"; $message .= "Ad Soyad: {$data['name']}\n"; $message .= "Telefon: {$data['phone']}\n"; $message .= "Sınav: " . strtoupper($data['exam']) . "\n"; $message .= "Alan: " . ucfirst($data['field']) . "\n"; $message .= "Hedef Puan: {$data['target_score']}\n"; $message .= "Günlük Süre: {$data['daily_hours']} saat\n"; if (!empty($data['message'])) { $message .= "Mesaj: {$data['message']}\n"; } $message .= "\nIP: {$data['ip_address']}\n"; $message .= "Tarih: " . date('d.m.Y H:i') . "\n"; wp_mail($to, $subject, $message); } /** * Get client IP address */ private function get_client_ip() { $ip_keys = [ 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ]; foreach ($ip_keys as $key) { if (array_key_exists($key, $_SERVER) === true) { foreach (explode(',', $_SERVER[$key]) as $ip) { $ip = trim($ip); if (filter_var($ip, FILTER_VALIDATE_IP) !== false) { return $ip; } } } } return '0.0.0.0'; } /** * Add admin menu */ public function add_admin_menu() { add_menu_page( 'HKS Başvurular', 'HKS Başvurular', 'manage_options', 'hks-applications', [$this, 'render_admin_page'], 'dashicons-welcome-learn-more', 30 ); add_submenu_page( 'hks-applications', 'HKS Ayarlar', 'Ayarlar', 'manage_options', 'hks-settings', [$this, 'render_settings_page'] ); } /** * Render admin page */ public function render_admin_page() { global $wpdb; $table_name = $wpdb->prefix . self::TABLE_NAME; // Handle status update if (isset($_POST['update_status']) && isset($_POST['application_id'])) { check_admin_referer('hks_update_status'); $application_id = intval($_POST['application_id']); $status = sanitize_text_field($_POST['status']); $wpdb->update( $table_name, ['status' => $status], ['id' => $application_id], ['%s'], ['%d'] ); echo '

Durum güncellendi.

'; } // Get applications $applications = $wpdb->get_results( "SELECT * FROM {$table_name} ORDER BY created_at DESC LIMIT 100" ); include plugin_dir_path(__FILE__) . 'admin/applications.php'; } /** * Render settings page */ public function render_settings_page() { if (isset($_POST['save_settings'])) { check_admin_referer('hks_save_settings'); update_option('hks_whatsapp_number', sanitize_text_field($_POST['whatsapp_number'])); update_option('hks_enable_notifications', isset($_POST['enable_notifications']) ? '1' : '0'); update_option('hks_notification_email', sanitize_email($_POST['notification_email'])); update_option('hks_recaptcha_site_key', sanitize_text_field($_POST['recaptcha_site_key'])); update_option('hks_recaptcha_secret_key', sanitize_text_field($_POST['recaptcha_secret_key'])); echo '

Ayarlar kaydedildi.

'; } include plugin_dir_path(__FILE__) . 'admin/settings.php'; } /** * Enqueue scripts */ public function enqueue_scripts() { if (is_page() && has_shortcode(get_post()->post_content, 'hks_landing')) { $recaptcha_site_key = get_option('hks_recaptcha_site_key'); if (!empty($recaptcha_site_key)) { wp_enqueue_script( 'hks-recaptcha', 'https://www.google.com/recaptcha/api.js?render=' . urlencode($recaptcha_site_key), [], null, true ); } wp_enqueue_script( 'hks-landing-js', plugin_dir_url(__FILE__) . 'assets/js/hks-landing.js', ['jquery'], self::VERSION, true ); wp_localize_script('hks-landing-js', 'hksAjax', [ 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce(self::NONCE_ACTION), 'whatsapp' => get_option('hks_whatsapp_number', '905052991316'), 'recaptchaSiteKey' => $recaptcha_site_key, ]); } } /** * Verify reCAPTCHA token */ private function verify_recaptcha_token($token) { $secret = get_option('hks_recaptcha_secret_key'); if (empty($secret)) { return; } if (empty($token)) { throw new Exception('Güvenlik doğrulaması eksik.'); } $response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', [ 'timeout' => 10, 'body' => [ 'secret' => $secret, 'response' => $token, 'remoteip' => $this->get_client_ip(), ], ]); if (is_wp_error($response)) { throw new Exception('Güvenlik doğrulaması başarısız.'); } $data = json_decode(wp_remote_retrieve_body($response), true); $score = isset($data['score']) ? (float) $data['score'] : 0.0; $success = isset($data['success']) ? (bool) $data['success'] : false; if (!$success || $score < 0.5) { throw new Exception('Güvenlik doğrulaması başarısız.'); } } /** * Render landing page */ public function render_landing_page($atts) { ob_start(); include plugin_dir_path(__FILE__) . 'templates/landing-page.php'; return ob_get_clean(); } } // Initialize plugin HKS_Landing_Plugin::get_instance(); yökdil kursu - Yds Yökdil Kursu

Yds Yökdil Kursu

yökdil kursu

YÖKDİL Nedir? Yüksek Öğretim Kurumları Yabancı Dil Sınavı (YÖKDİL), adayların fen bilimleri, sosyal bilimler ve sağlık bilimleri gibi kendi alanlarındaki dil becerilerini belirlemek ve seviyelerini ölçmek amacıyla yapılan bir yabancı dil sınavıdır.

YÖKDİL, Yükseköğretim Kurulu Başkanlığı koordinasyonuyla Anadolu Üniversitesi ve Ankara Üniversitesi’nin iş birliği yapması sonucunda düzenlenmekteydi. Ancak sınav, 2019’dan itibaren ÖSYM koordinatörlüğünde gerçekleşmektedir.

YDS YÖKDİL KURSU YDS YÖKDİL KURSU, adayların uzmanlık alanlarına yönelik İngilizce dil eğitimi almalarını sağlamaktadır. Fen bilimleri, sosyal bilimler ve sağlık bilimleri olmak üzere sınavın her 3 alanında da derslerimiz bulunmaktadır.

YÖKDİL sonucu, yüksek öğretim kurumlarında lisans üstü eğitim başvuruları yapma aşamasında kullanılmaktadır. Akademik ilerleyiş açısından oldukça önemli bir yere sahip olan YÖKDİL’i en iyi şekilde tamamlamak için, YÖKDİL kursumuzu inceleyebilir ve ücretsiz deneme derslerinden faydalanabilirsiniz.

Günümüz dünyasının olmazsa olmazlarından biri internettir. İnternetle entegre edilmiş olan ve internetin bulunmadığı ortamlarda bile katılım sağlayabileceğiniz kurs sistemi sayesinde, YÖKDİL sonucunuz akademik kariyerinizin altın vuruşlarından biri olacak.

YDS YÖKDİL KURSU birebir takip sistemi, çalışan bir gruba dahil olarak rekabet ortamına katılma fırsatı, ücretsiz soru çözüm grubu, akıllı kelime sistemi, birebir koçluk ve kolay iletişim imkânı ile bu alandaki tüm rakiplerinden ayrılarak bir adım öne çıkmaktadır. Hazırlık sürecinde uluslararası bağlantılar kurmanızı sağlayacak alt yapısıyla, iyi bir çevre edinmenize de yardımcı olmaktadır. Ayrıca dil öğrenme sürecinde hemen hemen herkesin karşılaştığı zorluklara, özel olarak hazırlanmış nokta atışı çözümlerle destek olmaktadır.

YDS YÖKDİL KURSU Nedir? YDS YÖKDİL KURSU, lisans üstü eğitim programlarına kayıt olmak için gerekli olan YÖKDİL’e, yıllarını dil öğrenimine adamış ve işini büyük bir aşkla yapan Hakan Hoca koordinatörlüğünde hazırlanmanızı sağlar. YÖKDİL kursu sayesinde sınav hazırlık sürecinde Hakan Hocayla sürekli iletişim içinde olur ve çalışma programınızı onun koordinatörlüğünde şekillendirmiş olursunuz.

YDSYÖKDİL KURSU, sizin gibi YÖKDİL’e çalışan kişilerle Whatsapp ve Telegram gruplarında bir araya gelmenizi ve bu sayede rekabet ortamına dahil olmanızı sağlar. Ayıca tamamen Hakan Hoca’ya ait bir sistem olan akıllı kelime sistemi sayesinde, dil öğrenme sürecindeki en önemli zorluklardan biri olan kelime ezberleme zorluğu ve kelimeleri unutma problemini daha kolay ve pratik şekilde halledersiniz.

YÖKDİL kursuna başlamadan önce Hakan Hoca ile bire bir görüşme gerçekleştirirsiniz ve ardından, bizzat Hakan Hoca tarafından dil seviyenizi tespit edecek bir sınava tabi tutulursunuz. Dil seviyeniz tespit edildikten sonra seviyenize ve hedeflerinize uygun bir çalışma programı Hakan Hoca tarafından hazırlanır.

Sonrasında haftalık olarak programınız kontrol edilir ve çeşitli Quizlerle ne kadar yol aldığınız sürekli olarak takip edilir. Whatsapp ve Telegram gruplarından hemen hemen her gün Quizler yapılır ve öğrencilerin daha fazla motive olması adına, hafta içi yapılan bu Quizlerde en yüksek sonucu alan kişiye haftanın sonunda bir kitap hediye edilir.

YÖKDİL Kursu Online Günümüzde ev, iş, okul derken pek çok kişi zamanla yarışıyor ve çoğu zaman sevdiklerine bile yeterli zamanı ayıramayacak hale geliyor. Durum böyleyken akademik anlamda kariyer yapmak isteyen kişilerin, lisans üstü eğitime kabul almak için mutlak bir şart olan YÖKDİL’e yeteri kadar zaman ayırması, neredeyse imkânsız görünüyor. Online YÖKDİL kursu işte tam olarak bu noktada yardımınıza koşuyor.

YÖKDİL kursu online şekilde tasarlanmış ve haftanın 7 günü 24 saat erişim sağlayabileceğiniz bir formatta kurgulanmıştır. Bu sayede internetin olmadığı noktalarda bile kursa kolayca erişim sağlayabilir ve dilediğiniz zaman dilediğiniz yerden sisteme girerek eğitiminize kaldığınız yerden devam edebilirsiniz.

Ayrıca sınav sürecinde sık yaşanan sorunlardan biri olan motivasyon kaybını, minimum seviyede yaşamanız için sürekli olarak koçluk sistemiyle takip edilirsiniz ve gelişiminiz haftalık olarak rapor edilir. Böylece çalışmalarınızın karşılığını ve süreç içerisinde ne kadar yol aldığınızı rahatlıkla takip edebilir ve eksiklerinizi kolayca tespit ederek üzerinde çalışabilirsiniz.

YÖKDİL Kursu Fiyatları Her geçen gün hayat pahalılığının artması her alana olduğu gibi İngilizce kurslarına da yansıdı ve çoğu kurs artık pek çok kişinin erişemeyeceği fiyatlara ulaştı. Hâl böyleyken YÖKDİL kursu fiyatları da arttı. Oldukça uzun bir yolculuk olan akademik kariyerin, ilk adımlarından biri olan YÖKDİL, profesyonel anlamda destek alınması gereken oldukça önemli bir sınavdır.

YDS YÖKDİL KURSU olarak bu süreçte sizlerin yanında olmaktan ve kaliteli eğitime en uygun fiyata ulaşmanızı sağlamaktan büyük bir mutluluk duyuyoruz. Hakan Hoca YÖKDİL kursu güncel koşullar baz alınarak olabilecek en uygun ücrette hazırlanmıştır. Hakan Hoca YÖKDİL kursu fiyatları ve eğitim programları hakkında detaylı bilgi almak için Whatsapp, Instagram veya Mail üzerinden bizimle iletişime geçebilirsiniz.

YÖKDİL Uzaktan Eğitim Paketleri YÖKDİL Uzaktan Eğitim Paketleri sağlık bilimleri, sosyal bilimler ve fen bilimleri alanlarına özel olacak şekilde ayrı ayrı tasarlanmıştır. Öğrenci kendi alanına ait uzaktan eğitim paketine kaydolduktan sonra Hakan Hoca ile bire bir görüşmekte ve bu görüşme sonrasında bizzat Hakan Hoca tarafından dil seviyesini tespit edecek bir sınava tabi tutulmaktadır.

Yapılan sınav sonrasında öğrenciye, eksik noktalarının üzerine gitmesini sağlayacak bir çalışma programı Hakan Hoca tarafından hazırlanmakta ve bu noktadan itibaren öğrenci her hafta düzenli olarak takip edilmektedir. Koçluk sistemi sayesinde süreç içerisindeki iniş çıkışlar yakından takip edilmekte ve motivasyon kaybı gibi durumlarda kişinin bir an önce toparlanıp tekrardan düzenli çalışma sistemine geçmesi sağlanmaktadır.

YÖKDİL Online Eğitim YÖKDİL Online Eğitim sistemiyle ömür boyu işinize yarayacak dil yeterliliğine ulaşabilir ve lisans üstü eğitimin en önemli şartlarından biri olan YÖKDİL’i, oldukça yüksek bir puanla geçebilirsiniz. Hakan Hoca tarafından sunulan YÖKDİL Online Eğitim kişiye özel oluşturulan programı, bire bir takip sistemi ve dil öğrenme incelikleri bilinerek geliştirilmiş özel takip sistemiyle İngilizceye karşı ön yargılarınızı yıkacak ve dil becerilerinizin büyük ölçüde gelişmesini sağlayacak.

Akıllı kelime sistemi ve sorularınızın anında çözüldüğü soru çözüm gruplarıyla süreç içerisinde Hakan Hoca King ile birlikte çalışmanın ayrıcalığını sonuna kadar yaşayacaksınız. Siz de YÖKDİL’e hazırlanıyorum ve yüz yüze eğitim veren bir kursa gidecek ne zamanım var ne de bütçem diyorsanız vakit kaybetmeden online kurslarımıza kayıt yaptırın.

Fiyat ve eğitim programlarımız hakkında detaylı bilgi almak için iletişim kanallarımız üzerinden bize ulaşabilirsiniz.