Получить реальный IP пользователя

function get_ip() {
    //Just get the headers if we can or else use the SERVER global
    if ( function_exists( 'apache_request_headers' ) ) {
        $headers = apache_request_headers();
    } else {
        $headers = $_SERVER;
    }
    //Get the forwarded IP if it exists
    if ( array_key_exists( 'X-Forwarded-For', $headers ) && filter_var( $headers['X-Forwarded-For'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
        $the_ip = $headers['X-Forwarded-For'];
    } elseif (array_key_exists('HTTP_X_FORWARDED_FOR', $headers ) && filter_var($headers['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
        $the_ip = $headers['HTTP_X_FORWARDED_FOR'];
    } else {
        $the_ip = filter_var( $_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 );
    }
    return $the_ip;
}

Отправить POST запрос на PHP

function postRequest($url, $post = 0){
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url ); // отправляем на
  curl_setopt($ch, CURLOPT_HEADER, 0); // пустые заголовки
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвратить то что вернул сервер
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // следовать за редиректами
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);// таймаут4
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); // сохранять куки в файл
  curl_setopt($ch, CURLOPT_COOKIEFILE,  dirname(__FILE__).'/cookie.txt');
  curl_setopt($ch, CURLOPT_POST, $post!==0 ); // использовать данные в post
  if($post)
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

Пользоваться так

 

$data = postRequest('https://www.google.com/recaptcha/api/siteverify', array('secret'=>'','response'=>'', 'remoteip'=>''));

Как найти, где находится функция php

$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();

Как найти, где находится класс в php

идентично верхнему коду, можно найти и местоположение любого не встроенного класса в php

$ref = new ReflectionClass('Application');
print $ref->getFileName() . ':' . $ref->getStartLine();

Как получить все методы у объекта или класса в php

print_r(get_class_methods($obj));

Как удалить папку с файлами или почистить папку с файлами

1
2
3
4
5
6
7
8
9
10
function cleanDirectory($dir, $remove = false) {
  if ($objs = glob($dir."/*")) {
    foreach($objs as $obj) {
      is_dir($obj) ? cleanDirectory($obj, true) : unlink($obj);
    }
  }
  if ($remove) {
    rmdir($dir);
  }
}

пользуемся так

Если нужно просто отчистить директорию то запускаем без второго параметра, если после очистки нужно еще и удалить ее то вторым параметром подаем true

1
2
cleanDirectory('/home/www/files/images'); // очистка
cleanDirectory('/home/www/files/images', true); // удаление

Как отдать на загрузку какой-либо файл на сервере с помощью php

универсальный загрузчик выглядит так

function download ($file) {
  if (!empty($file) and file_exists($file) and is_file($file)) {
    if (ob_get_level()) {
      ob_end_clean();
    }
 
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
     
    if ($fd = fopen($file, 'rb')) {
      while (!feof($fd)) {
        print fread($fd, 1024);
      }
      fclose($fd);
    }
  } else {
    header('HTTP/1.0 404 Not Found');
    echo 'File not found';
  }
  exit();
}

Сгенерировать строку из случайных символов

Часто надо сгененрировать случайную строку для соли или еще для чего

function generateHash ($length = 8){
  $password = "";
  $possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ";
  $maxlength = strlen($possible);
  if ($length > $maxlength) {
    $length = $maxlength;
  }
  $i = 0;
  while ($i < $length) {
    $char = substr($possible, mt_rand(0, $maxlength-1), 1);
    if (!strstr($password, $char)) {
      $password .= $char;
      $i++;
    }
  }
  return $password;
}

 

универсальный загрузчик выглядит так

Узнать, пришел ли запрос через AJAX

Этот способ работает только с jQuery. Она при AJAX запросе добавляет заголовок HTTP_X_REQUESTED_WITH=XMLHttpRequest в запрос

Поэтому, можно написать на сервере функцию проверки

function isAjax(){
  return isset($_SERVER['HTTP_X_REQUESTED_WITH']) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';
}

 

 

Оставлять комментарии могут только зарегистрированные пользователи

Комментарии  

Danny444
# Danny444 07.07.2022 11:27
pg soft can be played on all platforms. Supports all systems, 100% safe, can play 24 hours a day. The more you play, the richer you are.
kaokao
# kaokao 07.07.2022 15:35
เครดิตฟรี ไม่ต้องฝาก ไม่ต้องเเชร์ เล่นได้เลย 24 ชม. เล่นง่าย ได้เงินไว มีบริการฝากถอนเงินแบบออโต้ที่รวดเร็วที่สุด สล็อตออนไลน์ สล็อต ที่มาแรงที่สุดในปี 2022 นี้ สะดวกสบายมากที่สุด