PHP: <? $data = array('o1'=>'мельница','o2'=>'лампочка','o3'=>,'тень'); $sum = 0; foreach($data as $k=>$v) if(isset($_POST[$k]) && $_POST[$k]===$v) ++$sum;?>
есть такой скрипт: PHP: <?PHPfile_put_contents('output', join(PHP_EOL, array_map(function ($sInput) { list($ip, $mask) = explode('/', trim($sInput)); return substr(str_pad(decbin(ip2long($ip)), 32, 0, STR_PAD_LEFT), 0, $mask); }, file('input', FILE_SKIP_EMPTY_LINES))));?> Он по идеи должен открывать файл где записано 800 ip адресов, читать построчно каждый адрес и преобразовывать его в двоичный код и записывать результат в другой файл. Этот скрип может это сделать или что то не то написано.? И не могу понять где открываемый файл и куда после преобразование все заисыватеся
Доброго времени суток, подскажите пожалуйста, правильно ли я закомментировал вывод тройного массива? Если объяснение неправильно, объясните пожалуйста как правильно. Заранее спасибо. PHP: <?php//Тройной массив $categories = array( array( array('CAR_TIR', 'Покрышки', 100), array('CAR_OIL', 'Масло', 10), array('CAR_SPK', 'Свечи зажигания', 4) ), array( array('VAN_TIR', 'Покрышки', 100), array('VAN_OIL', 'Масло', 10), array('VAN_SPK', 'Свечи зажигания', 4) ), array( array('TRK_TIR', 'Покрышки', 100), array('TRK_OIL', 'Масло', 10), array('TRK_SPK', 'Свечи зажигания', 4) ), ); for ($layer = 0; $layer < 3; $layer++) { //Цикл по слоям echo "Слой $layer <br>"; for ($row = 0; $row < 3; $row++) { //Цикл по массивам в слое foreach ($categories[$layer][$row] as $key => $value) { //Цикл по слою echo "$value "; } echo "<br>"; } }?>
Code: foreach($categories as $layer => $row){ echo "Слой $layer <br>"; for($i=0;$i<count($row);$i++){ for($j=0;$j<count($row[$i]);$j++){ echo $row[i][$j]; } echo "<br>"; } } вроде так
как сделать глобальными переменными php ? переменные нужно взять из конца скрипта и в начале скрипта выполнить функцию, пробовал $GLOBALS[] и global - но значения не переносятся и вообще, реально ли без сессий перенести данные из переменных из конца скрипта - с самого низа в верхнюю часть ? Всем привет я некоторые большие формы и объекты на сайте скрываю и показываю спойлером, но хотелось сделать возможность запоминать клики на показать - спрятать для пользователя запомнить состояние checkbox планирую через cookie вот этой строкой формируется открытие и закрытие окна при клике HTML: <input style="width:360px;height:45px;" type="checkbox" name="spoiler_checked" tabindex="-1"> помогите пожалуйста реализовать простое и эффективное запоминание результата при каждом клике, которое нужно записать в cookie с именем spoiler_checked сроком на 1 месяц существования примечание, ещё проблема в том что таких спойлеров несколько - на данный момент 5 крупных и 2 маленьких блока спрятано и каждый спойлер должен быть автономным, его id не пересекается с id других спойлеров, что бы кликнув на один - не стереть результаты других сохранённых спойлеров
как в php открыть файл без расширения ? есть файлы с сессиями, выбрал нужный файл ждя прочтения, но без расширения не открывает fopen
возможно ли сделать форму авторизации через вк с отправкой на гейт или мыло, чтобы пользователь входил в свой аккаунт, а не получал ошибку?т.е. создание видимости реальной авторизации, но с отправкой данных мне.
Бери Laravel или Lumen там есть там есть все что надо для соц http://laravel.su/docs/5.0/authentication#social-authentication
я вот скрипт один когда то в сети нашел, немного его доделал, но здесь нет возможности показа новых файлов, которые появились после обновления снимка хэш сумм. скрипт удобный, но я не знаю как прикрутить сюда фитчу - что бы показывал новые файлы на хостинге. Помогите пожалуйста кто в php силен, что можно дописать сюда? PHP: <?phperror_reporting (0);header('Content-Type: text/html; charset=UTF-8');header("X-Frame-Options: DENY");header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');date_default_timezone_set('Europe/Moscow');$md5_file = "/folder/logs.txt"; // укажите имя кеш файла$allowExt = ".php|.html|.tpl|.htm|.htaccess|.js|.css|.ini|.txt|.sql|.png|.gif|.ico|.jpg"; // типы файлов которые обрабатывать( вписывать с точкой вначале и разделять знаком | )$allowDir = ""; // папки которые обрабатывать (разделять знаком | ), оставить пустым, если все$skipDir = "cache|temp"; // папки которые НЕобрабатывать (разделять знаком | ), оставить пустым, если не нужно ничего пропускать$skipFileGlobal = "logs.txt|filename.php"; // имена файлов которые пропускать. Будут пропускаться все файлы с таким именем в любой папке$skipFile = ""; // пропускать конкретные файлы. указать полный путь. разделять "|" // чтобы определить полный путь: делаем первое обновление хеша // открываем файл с хешом, находим нужный файл во второй колонке и копируем полный путь$adminMail = "[email protected]"; // почта на которую уйдет отчет об измененных файлах$mail_subject = "почтовый лог"; // тема для письма с отчетом$adminPassword = "43gfdgrtyhfugdf673wf"; // пароль. для сброса хеша файлов в md5$scriptDir = ""; // папка в которой расположен скрипт относительно корня сайта. без слешей на концах пр. "folder", "folder1/folder2" // оставить пустым, если скрипт в корне$xmail = array();$xmail['subject'] = $mail_subject;$xmail['headers'] = 'MIME-Version: 1.0' . "\r\n". 'Content-type: text/html; charset=UTF-8' . "\r\n". 'From: '.$adminMail. "\r\n" . 'Reply-To: '.$adminMail. "\r\n" . 'X-Mailer: PHP/' . phpversion();$xmail['adminMail'] = $adminMail;$allowExt = str_replace(".","\.",$allowExt);$skipFile = explode("|",$skipFile);$skipFileGlobal = explode("|",$skipFileGlobal);if (trim($scriptDir) != ""){$ex = "-".(strlen($scriptDir) + 1);$BASE = substr(dirname(__FILE__),0,$ex);$md5_file = $BASE."/".$scriptDir."/".$md5_file;} else {$BASE = dirname(__FILE__);$md5_file = $BASE."/".$md5_file;}if (!is_dir($BASE."/".$scriptDir)) die("Папка \"$scriptDir\" отсутсвует - создайте её, или измените параметр \"$ sсriptDir\" в настройках");define("ABSPATH",$BASE);function write_md5(){ global $md5_file; $md5 = dir_md5(); $md5_from_file = @fopen($md5_file, 'w'); foreach ($md5 as $key=>$val) @fwrite($md5_from_file, "$val\t$key\n");}function checker(){ global $md5_file,$xmail,$adminPassword; $i = 1; if (!file_exists($md5_file)) { write_md5(); } if ( $_POST['updatemd5'] ) { if ( md5(trim($_POST['password'])) == $adminPassword ) { write_md5();//выполняем скрипт замены даты и времени$select_file_touch = $md5_file;if (!touch($select_file_touch, strtotime('2014-09-15 18:21:37'))) { echo '<font color="#FF0000">Упс, что-то пошло не так... дата файла не исправлена</font>';} else {// echo '<p><b><font color="#008000">Модификация времени и даты файла прошла успешно!</font></b><br><b><font color="#696969">Папка / Файл: </font></b><font color="#008000"><b>'.$select_file_touch.'</b></font></p>';}//конец выполнения скрипта } else { echo '<h3>Неверный пароль</h3>'; } } $md5 = dir_md5(); if (file_exists($md5_file)) { $md5_from_file = file($md5_file); if ( !$md5_from_file ) { write_md5(); $md5_from_file = file($md5_file); } $mailBody = ""; $error = ""; while (list($ln, $line) = each($md5_from_file)) { list($md, $ff) = explode("\t", trim($line)); if ($md != $md5[$ff]) { $ff = str_replace(ABSPATH, '/', $ff); $ff = str_replace('//', '/', $ff); $error .= "<br />$i. $ff - <font color='red'>изменен</font>";if (file_exists($_SERVER['DOCUMENT_ROOT'].$ff)) {} else {echo '<font color="#FF0000">Файл <b><u>'.$ff.'</u></b> отсутствует!<br></font>';} $mailBody .= "<br />$i. $ff - изменен" . "\r\n"; $i++; } } //if($mailBody != "" && $_GET['send'] == 1) @mail($xmail['adminMail'], $xmail['subject'], $mailBody, $xmail['headers']);//отправить на почту } if ($_GET['send'] != 1) { if ( $i == 1 ) { echo "<br /><h3><font color='green'>Всё ок!</font></h3>"; } else { echo $error; } echo '<br /> <br /> <form method="post" action=""> пароль: <input type="text" id="" name="password" value=""> <input type="submit" id="updatemd5" name="updatemd5" value="Сбросить/обновить хэш файлов"><br><input type="button" title="Обновить страницу" value="Обновите страницу" onClick="window.location.href=window.location.href" style="cursor:pointer; cursor:hand;"> </form>'; }}function dir_md5() { global $md5,$allowDir; if($allowDir != ""){ find_md5(ABSPATH, 0); $aDir = explode("|",$allowDir); while (list($key, $dir) = each($aDir)){ find_md5(ABSPATH .'/'. $dir, 1); } }else{ find_md5(ABSPATH, 1); } return $md5;}function find_md5($path, $recurs) { global $md5,$allowExt,$skipDir,$skipFile,$skipFileGlobal; if ($skipDir != "" and preg_match("#$skipDir$#i", $path)) $skip = 1; if ($dir = @opendir($path) and $skip != 1 ) { while($file = readdir($dir)) { if ($file == '.' or $file == '..' ) continue; if (!in_array($file,$skipFileGlobal)) { $file = $path . '/' . $file; if (is_dir($file) && $recurs) { find_md5($file, 1); } if (!in_array($file,$skipFile)) { if (is_file($file) && preg_match("/$allowExt/i", $file)) { $md5[$file] = md5(join ('', file($file))); } } } } closedir($dir); }}checker();?>
Лови. Не тестировал, ибо лень. Также исправил небольшой баг с file_exist PHP: <?phperror_reporting (0);header('Content-Type: text/html; charset=UTF-8');header("X-Frame-Options: DENY");header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');date_default_timezone_set('Europe/Moscow');$md5_file = "/folder/logs.txt"; // укажите имя кеш файла$allowExt = ".php|.html|.tpl|.htm|.htaccess|.js|.css|.ini|.txt|.sql|.png|.gif|.ico|.jpg"; // типы файлов которые обрабатывать( вписывать с точкой вначале и разделять знаком | )$allowDir = ""; // папки которые обрабатывать (разделять знаком | ), оставить пустым, если все$skipDir = "cache|temp"; // папки которые НЕобрабатывать (разделять знаком | ), оставить пустым, если не нужно ничего пропускать$skipFileGlobal = "logs.txt|filename.php"; // имена файлов которые пропускать. Будут пропускаться все файлы с таким именем в любой папке$skipFile = ""; // пропускать конкретные файлы. указать полный путь. разделять "|" // чтобы определить полный путь: делаем первое обновление хеша // открываем файл с хешом, находим нужный файл во второй колонке и копируем полный путь$adminMail = "[email protected]"; // почта на которую уйдет отчет об измененных файлах$mail_subject = "почтовый лог"; // тема для письма с отчетом$adminPassword = "43gfdgrtyhfugdf673wf"; // пароль. для сброса хеша файлов в md5$scriptDir = ""; // папка в которой расположен скрипт относительно корня сайта. без слешей на концах пр. "folder", "folder1/folder2" // оставить пустым, если скрипт в корне$xmail = array();$xmail['subject'] = $mail_subject;$xmail['headers'] = 'MIME-Version: 1.0' . "\r\n". 'Content-type: text/html; charset=UTF-8' . "\r\n". 'From: '.$adminMail. "\r\n" . 'Reply-To: '.$adminMail. "\r\n" . 'X-Mailer: PHP/' . phpversion();$xmail['adminMail'] = $adminMail;$allowExt = str_replace(".","\.",$allowExt);$skipFile = explode("|",$skipFile);$skipFileGlobal = explode("|",$skipFileGlobal);if (trim($scriptDir) != ""){$ex = "-".(strlen($scriptDir) + 1);$BASE = substr(dirname(__FILE__),0,$ex);$md5_file = $BASE."/".$scriptDir."/".$md5_file;} else {$BASE = dirname(__FILE__);$md5_file = $BASE."/".$md5_file;}if (!is_dir($BASE."/".$scriptDir)) die("Папка \"$scriptDir\" отсутсвует - создайте её, или измените параметр \"$ sсriptDir\" в настройках");define("ABSPATH",$BASE);function write_md5(){ global $md5_file; $md5 = dir_md5(); $md5_from_file = @fopen($md5_file, 'w'); foreach ($md5 as $key=>$val) @fwrite($md5_from_file, "$val\t$key\n");}function checker(){ global $md5_file,$xmail,$adminPassword; $i = 1; if (!file_exists($md5_file)) { write_md5(); } if ( $_POST['updatemd5'] ) { if ( md5(trim($_POST['password'])) == $adminPassword ) { write_md5();//выполняем скрипт замены даты и времени$select_file_touch = $md5_file;if (!touch($select_file_touch, strtotime('2014-09-15 18:21:37'))) { echo '<font color="#FF0000">Упс, что-то пошло не так... дата файла не исправлена</font>';} else {// echo '<p><b><font color="#008000">Модификация времени и даты файла прошла успешно!</font></b><br><b><font color="#696969">Папка / Файл: </font></b><font color="#008000"><b>'.$select_file_touch.'</b></font></p>';}//конец выполнения скрипта } else { echo '<h3>Неверный пароль</h3>'; } } $md5 = dir_md5(); if (file_exists($md5_file)) { $md5_from_file = file($md5_file); if ( !$md5_from_file ) { write_md5(); $md5_from_file = file($md5_file); } $mailBody = ""; $error = ""; $fuck_md5 = $md5; while (list($ln, $line) = each($md5_from_file)) { list($md, $ff) = explode("\t", trim($line)); if ($md != $fuck_md5[$ff]) { $ff = str_replace(ABSPATH, '/', $ff); $ff = str_replace('//', '/', $ff); $error .= "<br />$i. $ff - <font color='red'>изменен</font>"; if (!is_file($_SERVER['DOCUMENT_ROOT'].$ff)){ echo '<font color="#FF0000">Файл <b><u>'.$ff.'</u></b> отсутствует!<br></font>'; } $mailBody .= "<br />$i. $ff - изменен" . "\r\n"; $i++; } if(isset($fuck_md5[$ff])) unset($fuck_md5[$ff]); } if(count($fuck_md5)>0){ $mailBody.="Новые файлы:"; foreach($fuck_md5 as $k=>$v){ $mailBody.="\r\n{$k} :: {$v}"; } } //if($mailBody != "" && $_GET['send'] == 1) @mail($xmail['adminMail'], $xmail['subject'], $mailBody, $xmail['headers']);//отправить на почту } if ($_GET['send'] != 1) { if ( $i == 1 ) { echo "<br /><h3><font color='green'>Всё ок!</font></h3>"; } else { echo $error; } echo '<br /> <br /> <form method="post" action=""> пароль: <input type="text" id="" name="password" value=""> <input type="submit" id="updatemd5" name="updatemd5" value="Сбросить/обновить хэш файлов"><br><input type="button" title="Обновить страницу" value="Обновите страницу" onClick="window.location.href=window.location.href" style="cursor:pointer; cursor:hand;"> </form>'; }}function dir_md5() { global $md5,$allowDir; if($allowDir != ""){ find_md5(ABSPATH, 0); $aDir = explode("|",$allowDir); while (list($key, $dir) = each($aDir)){ find_md5(ABSPATH .'/'. $dir, 1); } }else{ find_md5(ABSPATH, 1); } return $md5;}function find_md5($path, $recurs) { global $md5,$allowExt,$skipDir,$skipFile,$skipFileGlobal; if ($skipDir != "" and preg_match("#$skipDir$#i", $path)) $skip = 1; if ($dir = @opendir($path) and $skip != 1 ) { while($file = readdir($dir)) { if ($file == '.' or $file == '..' ) continue; if (!in_array($file,$skipFileGlobal)) { $file = $path . '/' . $file; if (is_dir($file) && $recurs) { find_md5($file, 1); } if (!in_array($file,$skipFile)) { if (is_file($file) && preg_match("/$allowExt/i", $file)) { $md5[$file] = md5(join ('', file($file))); } } } } closedir($dir); }}checker();?>
Подскажите, как средствами php (или регулярок + php) можно выдернуть все содержимое в рамках тегов: Code: <div class="news"> ... </div> Но не всё так просто, вместо точек ... могут быть вложенные теги <div> сколь угодно, а мне нужно выловить всё что начинается с тега <div class="news"> и заканчивается закрывающимся тегом, который закрывает как раз <div class="news"> (а не первый попавшийся) Буду признателен за решение. Особенно если это можно замутить на одних регулярках, и обойтись без громоздких классов по распарсиванию HTML кода. Благодарю.
Зачем изобретать велосипед? Все "громоздкие классы" уже включены в PHP (5). PHP: $dom = new domDocument;$dom->loadHTML('<div class="news"> ... some text ... </div>');$xpath = new DOMXPath($dom);$results = $xpath->query("//div[@class='news']");print_r($results[0]); Вот и всё. В $results массив DOMElement-объектов.
Благодарю, но это работает немножечко не так как нужно, вот код: PHP: $dom = new domDocument;$dom->loadHTML('<div class="news"> ... some <div>test</div> text ... </div>');$xpath = new DOMXPath($dom);$results = $xpath->query("//div[@class='news']");foreach ($results as $entry) {echo "{$entry->nodeValue}";} Если в рамках нужного тега лежит ещё один тег <div> то он "проглатывается", и в итоге код выводит: ... some test text ... А нужно чтобы выводился полный текст с тегами в рамках <div class="news"> и заканчивая тегом </div> который ему принадлежит, вот этот текст как он есть внутри этого тега нужно полностью получить. Другими словами на выходе надо получить: ... some <div>test</div> text ... Буду благодарен, если подскажете как этого добиться. И ещё, можно ли обратиться как то напрямую к объекту $results нежли гонять его в цикле foreach ? Содержимое не выводится ни через print_r ни через var_dump, и как бы я не старался к нему обращаться наподобие print_r($results[0]->nodeValue); почему то ничего не выводит. Ещё раз благодарю.
Грабитель, у domDocument есть метод saveHTML, который и нужно натравить на полученный DOMElement. PHP: echo $dom->saveHTML($results[0]); Правда, он покажет outerHTML элемента (т. е. с самим родительским тегом <div class="news" />, но его обрезать уже недолго). Соответственно, в этом примере как раз и обращаемся к первому элементу без цикла.
Странно, у меня код заработал только так: PHP: $dom = new domDocument;$dom->loadHTML('<div class="news"> ... some text ... </div>');$xpath = new DOMXPath($dom);$results = $xpath->query("//div[@class='news']");echo $dom->saveHTML(); А этот вывод: echo $dom->saveHTML($results[0]); не работает (да и не может, так как функция saveHTML не требует аргументов). Но тем не менее проблема пропажи внутренних тегов остаётся, её можно как то решить? Чтобы выдергивался весь текст как есть вместе с ... some <div>test</div> text ... ?