كيفية جعل الكود يرفع IP المستخدم اذا رفع صورة على الموقع

ممكن تعدلون على الكود بتاعي الى اضافة خانة لرفع IP الشخص الذي يرفع المنشور :

if(isset($_POST['add_product'])){

  $name = $_POST['name'];

  $name = filter_var($name, FILTER_SANITIZE_STRING);

  $price = $_POST['price'];

  $price = filter_var($price, FILTER_SANITIZE_STRING);

  $city = $_POST['city'];

  $city = filter_var($city, FILTER_SANITIZE_STRING);

  $date = $_POST['date'];

  $date = filter_var($date, FILTER_SANITIZE_STRING);

  $number = $_POST['number'];

  $number = filter_var($number, FILTER_SANITIZE_STRING);

  $place = $_POST['place'];

  $place = filter_var($place, FILTER_SANITIZE_STRING);

  $category = $_POST['category'];

  $category = filter_var($category, FILTER_SANITIZE_STRING);

  $details = $_POST['details'];

  $details = filter_var($details, FILTER_SANITIZE_STRING);

  $open = $_POST['open'];

  $open = filter_var($open, FILTER_SANITIZE_STRING);

  $image = $_FILES['image']['name'];

  $image = filter_var($image, FILTER_SANITIZE_STRING);

  $image_size = $_FILES['image']['size'];

  $image_tmp_name = $_FILES['image']['tmp_name'];

  $image_folder = 'uploaded_img/'.$image;

  $image_type=$_FILES['image']['type'];

  $select_products = $conn->prepare("SELECT * FROM `acses` WHERE name = ?");

  $select_products->execute([$name]);

  if(! in_array($image_type,array('image/png','image/gif','image/jpg','image/jpeg'))){

   $errors[] = $message['center'] = 'قم بتحميل صورة صالحة بالضغط على المربع الاصفر';

  }else{

   $insert_products = $conn->prepare("INSERT INTO `acses`(name, category, details, price, image, number, place,type,city,date) VALUES(?,?,?,?,?,?,?,?,?,?)");

   $insert_products->execute([$name, $category, $details, $price, $image, $number, $place,$image_type,$city,$date ]);

   if($insert_products){

     if($image_size > 2000000){

      $message[] = 'حجم الصورة جدا كبير';

     }else{

      move_uploaded_file($image_tmp_name, $image_folder);

      $message[] = 'تم نشر الإعلان';

     }

   }

  }

};

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

Mustafa_Suleiman أضف ردا

استخدم متغير $_SERVER['REMOTE_ADDR'] وهو متغير في لغة PHP يحتوي على عنوان IP الذي يتصل منه المستخدم بالخادم (السيرفر) كالتالي:

أولاً، قم بإضافة خانة في استعلام الإدراج (INSERT query) لتضمين عنوان IP:

$insert_products = $conn->prepare("INSERT INTO `acses` (name, category, details, price, image, number, place, type, city, date, user_ip) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

ثم، قم بتحديد قيمة user_ip باستخدام $_SERVER['REMOTE_ADDR']:

$user_ip = $_SERVER['REMOTE_ADDR'];
$insert_products->execute([$name, $category, $details, $price, $image, $number, $place, $image_type, $city, $date, $user_ip]);

قم باستخلاص عنوان IP من الطلبية على النحو التالي:

$ip = $_SERVER['HTTP_CLIENT_IP'] 
   ? $_SERVER['HTTP_CLIENT_IP'] 
   : ($_SERVER['HTTP_X_FORWARDED_FOR'] 
        ? $_SERVER['HTTP_X_FORWARDED_FOR'] 
        : $_SERVER['REMOTE_ADDR']);

ثم قم بحقنه أو استعماله في شيفرتك بحسب السياق الخاص بك.

أعتقد أنه من الضروري أن نكون متقيظين لقضايا الخصوصية، فحسب علمي لا يفضل رفع عناوين IP دون موافقة صريحة من المستخدمين أنفسهم لكن إذا كنت بحاجة إلى تسجيل عنوان IP لأغراض تحليل السجلات أو الأمان، يمكن استخدام الدالة `$_SERVER['REMOTE_ADDR']` في PHP.

$user_ip = $_SERVER['REMOTE_ADDR'];

// ثم يمكنك استخدام $user_ip في جملة SQL لتخزينه في قاعدة البيانات
// قم بتعديل الاستعلام حسب هيكل قاعدة البيانات الخاصة بك
$insert_products = $conn->prepare("INSERT INTO `acses`(name, category, details, price, image, number, place, type, city, date, user_ip) VALUES(?,?,?,?,?,?,?,?,?,?,?)");

$insert_products->execute([$name, $category, $details, $price, $image, $number, $place, $image_type, $city, $date, $user_ip])

لكن يجب التأكد من تكوين الجدول في قاعدة البيانات لاستيعاب العنوان IP (`user_ip`)، وتغيير الجملة الـ SQL حسب الحاجة.

يمكنك تعديل الشيفرة البرمجية لإضافة عمود لحفظ عنوان IP للمستخدم :

أولاً، أضف عمودًا جديدًا إلى جدول قاعدة البيانات لتخزين عنوان الـ IP. يمكنك تسميته مثلًا "ip_address" بنوع varchar(255).

2. بعد ذلك، احصل على عنوان الـ IP للمستخدم وقم بتنقيته:

$ip_address = $_SERVER['REMOTE_ADDR'];
$ip_address = filter_var($ip_address, FILTER_SANITIZE_STRING);

3. ثم، قم بتضمين عنوان الـ IP كمعامل إضافي عند إدراج البيانات في قاعدة البيانات:

$insert_products = $conn->prepare("INSERT INTO `acses` 
 (name, category, details, price, image, number, place, ip_address, type, city, date) 
 VALUES(?,?,?,?,?,?,?,?,?,?,?)");
$insert_products->execute([
 $name, $category, $details, $price, $image, $number, $place, 
 $ip_address, $image_type, $city, $date
]);