PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 11
Linne Отправлено: 21 Января, 2018 - 21:56:55 • Тема: Не работает валидация формы • Форум: Вопросы новичков

Ответов: 6
Просмотров: 269
Sail пишет:
Linne, на Ваше усмотрение (ну, или требования системы): либо сделать, чтобы значение пароля передавалось не в массив (name='password'), либо проверять isset($_POST['password'] && empty($_POST['password']['password']))


Вот спасибо-то! Улыбка

Я использовал второй вариант, с проверкой:

PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['password']) && empty($_POST['password']['password']))
Linne Отправлено: 21 Января, 2018 - 21:41:19 • Тема: Не работает валидация формы • Форум: Вопросы новичков

Ответов: 6
Просмотров: 269
Sail пишет:
Linne, то есть, в 3-й строчке проверяется: "А не пуст ли массив?"
А массив не пуст. Потому что в нем есть элемент ["password"]=> string(0) ""
Вероятно, в форме name='password[]'?


А что же мне с этим можно сделать? Однако

Вот форма:

PHP:
скопировать код в буфер обмена
  1.        
  2. echo '
  3.   <fieldset>
  4.         <legend>Смена пароля администратора</legend>
  5.         <form name="newpass" action="addnewpass" method="POST">
  6.                 <p><label for="password">Введите новый пароль: </label></p>
  7.                 <p><input type="password" name="password[password]" /></p>
  8.                 <p><input type="submit" name="submit" value="Изменить" />
  9.                 <input type="button" onclick="window.location=\'/admin\';" value="Отмена" /></p>
  10.         </form>
  11.   </fieldset>
  12. ';
Linne Отправлено: 21 Января, 2018 - 21:16:32 • Тема: Не работает валидация формы • Форум: Вопросы новичков

Ответов: 6
Просмотров: 269
Sail пишет:
Linne, чудес ведь не бывает.
Возможно, выполняется вовсе не этот участок кода.
Ну и результат var_dump($_POST); можно посмотреть. В самом начале скрипта...


Вывод var_dump($_POST):

PHP:
скопировать код в буфер обмена
  1. array(2) { ["password"]=> array(1) { ["password"]=> string(0) "" } ["submit"]=> string(16) "Изменить" }


Это при отправке пустого поля.

А это вывод, при вводе 14-значного пароля:

PHP:
скопировать код в буфер обмена
  1. array(2) { ["password"]=> array(1) { ["password"]=> string(14) "12345678901234" } ["submit"]=> string(16) "Изменить" }
Linne Отправлено: 21 Января, 2018 - 20:15:23 • Тема: Не работает валидация формы • Форум: Вопросы новичков

Ответов: 6
Просмотров: 269
Здравствуйте, товарищи! Улыбка

Есть такой код для обновления пароля:

PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['submit'])){
  2.  
  3.     if(empty($_POST['password'])){
  4.         header('Refresh: 3; URL = /admin/newpass');
  5.         echo '<p class="error">Введите новый пароль!</p>';
  6.     }
  7.     /* elseif (!preg_match('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$/u', $password)) {
  8.         header('Refresh: 3; URL = /admin/newpass');
  9.         echo '<p class="error">Пароль может состоять только из цифр и букв латинского алфавита!</p>';
  10.     } */
  11.  
  12.     else{
  13.  
  14.         $doc =newDOMDocument('1.0','UTF-8');
  15.         $doc->formatOutput =true;
  16.         $doc->load('xml/admin.xml');
  17.         $root = $doc->documentElement;
  18.  
  19.         if(isset($_POST['password'])){
  20.             $password = $_POST['password'];
  21.  
  22.             $pass = $root->getElementsByTagName('password');
  23.  
  24.             if(isset($password['password'])and trim($password['password'])!=''){
  25.  
  26.                 $pass = $pass->item(0);
  27.                 $pass->nodeValue = crypt($password['password']);
  28.             }
  29.  
  30.         }
  31.  
  32.         $doc->save('xml/admin.xml');
  33.  
  34.         header('Refresh: 3; URL = /admin');
  35.         echo '<p class="valid">Пароль обновлён</p>';
  36.  
  37.         }
  38.  
  39. }


Этот код работает отлично, но, пропускает пустое поле. Т. е., если ничего не ввести и отправить на сервер, то всё равно выводится «Пароль обновлён», при этом, конечно, записи в файл не происходит.

Вроде бы всё логично: есть условие, что поле должно быть заполнено и если всё ОК, то пропускаем на перезапись в файл. Вообще не могу понять в чём может быть проблема.
Linne Отправлено: 29 Августа, 2017 - 22:43:09 • Тема: Помогите пожалуйста прикрутить пагинацию • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 140
Sail пишет:
Linne, со знаками вопроса и амперсанда в формируемых для пагинации ссылках разберитесь... Или воспользуйтесь функцией http_build_query()...


Да, спасибо, разобрался с выводом ссылок,— действительно, косяк был там, нужно было вместо вопроса установить амперсанд.

Теперь проблема в том, что пагинатор почему-то выводит больше ссылок (1 2 ... 4), чем надо (1 2), просто статей в категории всего три, а вывод по две на страницу.

Закралась мысль, что скрипт считает количество страниц для общего количества статей (файлов), но не учитывает только те, которые относятся к категории. Такая вот петрушка Огорчение
Linne Отправлено: 24 Августа, 2017 - 21:45:24 • Тема: Помогите пожалуйста прикрутить пагинацию • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 140
Переписал скрипт. Теперь выводит заданное количество ссылок на статьи, но, при переходе по ссылкам пагинатора вывод страниц таким и остаётся, как будто мы на 1 странице. Уже всё, что мог перепробовал (в преелах своего опыта). Нихера не получается! Не могу сообразить где там косяк.

Вот поделие моё:

PHP:
скопировать код в буфер обмена
  1. $catid = (isset($_GET['catid'])) ? (int)$_GET['catid'] : 1;
  2.                                                                        
  3. $perPage = 2;
  4.                                                                        
  5. $files = scandir($fileDir);    
  6.                        
  7. foreach($files as $num => $file) {
  8.        $full = $fileDir . '/' . $file;
  9.               if(is_file($full)) {
  10.               if (!is_dir($fileDir . $file) && !preg_match('/^article.*\.xml$/i', $file)) continue;
  11.               $files[$file] = filemtime($full);
  12.        }
  13. unset($files[$num]);
  14. }
  15. arsort($files);
  16.                                                                                                        
  17. $total = count($files);
  18. $pages = (int) ceil($total / $perPage);
  19.                                                                        
  20. if($total > 0) {
  21.                                                                                
  22.         $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
  23.                                                                                        
  24.         if($page > $pages or $page < 1)
  25.                 exit('Нет такой страницы');
  26.                                                                                                                
  27.         $start = ($page - 1) * $perPage;
  28.         $out = array_slice($files, $start, $perPage);                                                  
  29.                                                                                                        
  30.         foreach($out as $file => $date) {
  31.                                                                                                                
  32.                 $articleFile = simplexml_load_file($fileDir . $file);
  33.                 $id = htmlentities($articleFile['id']);
  34.                                                                                                                                        
  35.                 if ((string)$articleFile->categoryid == $catid) {                                      
  36.                                                                                                                                                
  37.                         echo '<li><a href="' . $articleFile['id'] . '">' . $articleFile->headline . '</a></li>';
  38.                 }      
  39.                                                                                                                
  40.         }
  41.                                        
  42. }
  43. else {
  44.         echo '<p>Нет файлов для отображения на этой странице</p>';
  45. }
  46.                                                        
  47. if($pages > 1) {
  48.         echo '<div>';
  49.         for($pr = '', $i = 1; $i <= $pages; $i++) {
  50.                echo $pr = (($i == 1 || $i == $pages || abs($i - $page) < 2) ? ($i == $page ? " $i " : ' <a href="?catid=' . $catid . '?page='. $i .'" title="Страница ' . $i . '">' . $i . '</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
  51.         }
  52.         echo '</div>';
  53. }
Linne Отправлено: 04 Мая, 2017 - 22:04:40 • Тема: Помогите пожалуйста прикрутить пагинацию • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 140
andrewkard пишет:
А что тут сложного, есть массив/список, который разбивается на группы - в данном случае по 3 штуки. В зависимости от GET параметра p, выбирается соотв. группа. По умолчанию с индексом 0
Поместите код в файл на веб сервере, например в test.php и откройте

http://localhost/test.php?p=3

поменяйте параметр р, станет яснее


Да принцип вроде и понятен, но как реализовать всё это в моём конкретном случае, это большой вопрос.
URL на странице категории выглядят таким образом: category.php?catid=6. Если, с пагинатором, то очевидно, должны выглядеть следующим образом: category.php?catid=6?page=2.
Как совместить первый и второй скрипт, вот это сложный вопрос. То есть, нужно, чтобы категория оставалась скажем, «6», при переходе на другую страницу, менялось только значение «page=»

Вот пример xml-файла:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?xml version="1.0"?>
  2. <article id="article20050630164826">
  3.         <authorid>4</authorid>
  4.         <categoryid>6</categoryid>
  5.         <headline>Пустыня Каракум</headline>
  6.         <description><![CDATA[
  7.                 <p>...</p>]]></description>
  8.         <pubdate>...</pubdate>
  9.         <status>live</status>
  10.         <keywords></keywords>
  11.         <body><![CDATA[
  12.                 <p>...</p>]]></body>
  13. </article>
  14.  

Вот такая беда…
Linne Отправлено: 04 Мая, 2017 - 20:25:14 • Тема: Помогите пожалуйста прикрутить пагинацию • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 140
andrewkard пишет:
Вот простенький пример, вариант реализации может быть и другой, но принцип тот же:

Спасибо, Вам за отклик, но я в php катастрофический нуб, для меня подобный пример, как ребус без отгадки. Я понимаю всё очень размыто, только начал изучать язык и боюсь, мне придётся сильно постараться, чтобы хоть как-то вникнуть. Огорчение
Linne Отправлено: 04 Мая, 2017 - 19:34:39 • Тема: Помогите пожалуйста прикрутить пагинацию • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 140
Попробовал сам ещё, но ничего не получается. Выводятся заголовки статей, которые относятся к данной категории, внизу пагинация, но при переходе на другие страницы они — пустые, без заголовков Огорчение
Вот что намутил:
PHP:
скопировать код в буфер обмена
  1. <h1>
  2.                 <?PHP
  3.                                 $cats = simplexml_load_file($fileDir . 'categories.xml');
  4.                                 foreach ($cats->category as $cat) {
  5.                         if ((string)$cat['id'] == $_GET['catid']) {
  6.                                 echo 'Категория: ' . $cat['label'];
  7.                         }
  8.                                 }
  9.                                 ?>
  10.                         </h1>
  11.                                         <?PHP
  12.                                         $perPage = 1;
  13.                         $dir = 'xml';
  14.                         $files = scandir($dir);
  15.                         foreach($files as $num => $file) {
  16.                                 $full = $dir . DIRECTORY_SEPARATOR . $file;
  17.                                 if(is_file($full)) {
  18.                                         if (!is_dir($fileDir . $file) && eregi('^article.*\.xml$', $file))
  19.                                         $files[$file] = filemtime($full);
  20.                                 }
  21.                                 unset($files[$num]);
  22.                         }
  23.                         arsort($files);
  24.                         $total = count($files);
  25.                         $pages = (int) ceil($total / $perPage);
  26.                         if($total > 0) {
  27.                                 $page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1;
  28.                                 if($page > $pages or $page < 1)
  29.                                         exit('Нет такой страницы');
  30.                                 $start = ($page - 1) * $perPage;
  31.                                 $out = array_slice($files, $start, $perPage);
  32.                                 foreach($out as $file => $date){
  33.                                         $articleFile = simplexml_load_file($fileDir . $file);
  34.                                         $id = htmlentities($articleFile['id']);
  35.                
  36.                                         echo '<ul>';
  37.                                                 if (isset($_GET['catid'])) {
  38.                                                         $files = opendir($fileDir);
  39.                                                                 while (($file = readdir($files)) !== FALSE) {
  40.                                                                         if (is_dir($fileDir . $file)) continue;
  41.                                                                         if (!eregi('^(article).*\.xml$', $file)) continue;
  42.                                                                        
  43.                                                                         $xml = simplexml_load_file($fileDir . $file);
  44.                                                                         if ((string)$xml->categoryid == $_GET['catid'] &&
  45.                                                                                                 (string)$xml->status == 'live') {
  46.                                                                                 $id = htmlentities($xml['id']);
  47.                                                                                 $label = htmlentities($xml->headline);
  48.                                                                                 echo '<li><a href="' . $id . '">' . $label . '</a></li>';
  49.                                                                         }
  50.                                                                 }
  51.                                                 }
  52.                                         echo '</ul>';
  53.                                        
  54.                                 }
  55.                         }
  56.                                 else
  57.                                 echo '<p>Нет файлов для отображения на этой странице</p>';
  58.                         if($pages > 1) {
  59.                                 echo '<div>';
  60.                                 for($pr = '', $i =1; $i <= $pages; $i++) {
  61.                                         echo $pr=(($i == 1 || $i == $pages || abs($i-$page) < 2) ? ($i == $page ? " $i " : ' <a href="' . $_SERVER['SCRIPT_NAME'] . '?catid=' . $_GET['catid'] . '?page='. $i .'" title="Страница ' . $i . '">' . $i . '</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
  62.                                 }
  63.                                 echo '</div>';
  64.                         }
  65.                                         ?>

Сам не разберусь… Огорчение
Linne Отправлено: 29 Апреля, 2017 - 16:39:02 • Тема: Помогите пожалуйста прикрутить пагинацию • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 140
Товарищи! Ну поможите пожалуйста, это личный, некоммерческий проект, научно-просветительский.
Linne Отправлено: 28 Апреля, 2017 - 18:32:25 • Тема: Помогите пожалуйста прикрутить пагинацию • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 140
Здравствуйте, уважаемые товарищи! Улыбка

У меня некоторая проблема. Есть код, который выводит из каталога xml-файлы, точнее, их узлы и мне удалось «методом научного тыка» прикрутить туда постраничный вывод, найденный на просторах интернета. Собственно, вот он:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.             $perPage = 1;
  3.             $dir = 'xml';
  4.             $files = scandir($dir);
  5.             foreach($files as $num => $file) {
  6.                 $full = $dir . DIRECTORY_SEPARATOR . $file;
  7.                 if(is_file($full)) {
  8.                     if (!is_dir($fileDir . $file) && eregi('^article.*\.xml$', $file))
  9.                     $files[$file] = filemtime($full);
  10.                 }
  11.                 unset($files[$num]);
  12.             }
  13.             arsort($files);
  14.             $total = count($files);
  15.             $pages = (int) ceil($total / $perPage);
  16.             if($total > 0) {
  17.                 $page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1;
  18.                 if($page > $pages or $page < 1)
  19.                     exit('Нет такой страницы');
  20.                 $start = ($page - 1) * $perPage;
  21.                 $out = array_slice($files, $start, $perPage);
  22.                 foreach($out as $file => $date){
  23.                     $articleFile = simplexml_load_file($fileDir . $file);
  24.                     $id = htmlentities($articleFile['id']);
  25.                     echo '<div class="section">
  26.                                               <h1>' . $articleFile->headline . '</h1>
  27.                                               <p class="date">' . $articleFile->pubdate . '</p>
  28.                                               <div class="abstract">' . $articleFile->description . '</div>
  29.                                               <a class="more" href="' . $articleFile['id'] . '" title="Читать статью «' . $articleFile->headline . '»">Читать статью</a>
  30.                                           </div>';
  31.                 }
  32.             }
  33.                 else
  34.                 echo '<p>Нет файлов для отображения на этой странице</p>';
  35.             if($pages > 1) {
  36.                 echo '<div>';
  37.                 for($pr = '', $i =1; $i <= $pages; $i++) {
  38.                     echo $pr=(($i == 1 || $i == $pages || abs($i-$page) < 2) ? ($i == $page ? " $i " : ' <a href="' . $_SERVER['SCRIPT_NAME'] . '?page='. $i .'" title="Страница ' . $i . '">' . $i . '</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
  39.                 }
  40.                 echo '</div>';
  41.             }
  42.         ?>


Есть также скрипт, который выводит список xml-файлов, которые относятся к той или иной категории, вот он:
PHP:
скопировать код в буфер обмена
  1. <h1>
  2.         <?PHP
  3.                    $cats = simplexml_load_file($fileDir . 'categories.xml');
  4.                    foreach ($cats->category as $cat) {
  5.                   if ((string)$cat['id'] == $_GET['catid']) {
  6.                      echo 'Категория: ' . $cat['label'];
  7.                   }
  8.                    }
  9.                 ?>
  10.             </h1>
  11.                     <?PHP
  12.                     echo '<ul>';
  13.                         if (isset($_GET['catid'])) {
  14.                             $handle = opendir($fileDir);
  15.                                 while (($file = readdir($handle)) !== FALSE) {
  16.                                     if (is_dir($fileDir . $file)) continue;
  17.                                     if (!eregi('^(article).*\.xml$', $file)) continue;
  18.                                    
  19.                                     $xml = simplexml_load_file($fileDir . $file);
  20.                                     if ((string)$xml->categoryid == $_GET['catid'] &&
  21.                                                 (string)$xml->status == 'live') {
  22.                                         $id = htmlentities($xml['id']);
  23.                                         $label = htmlentities($xml->headline);
  24.                                         echo '<li><a href="' . $id . '">' . $label . '</a></li>';
  25.                                     }
  26.                                 }
  27.                         }
  28.                         echo '</ul>';
  29.                     ?>

По-скольку, список явно будет длинным, то, здесь необходим такой же постраничный вывод, как и в предыдущем скрипте. Как прикрутить пагинатор из того скрипта к этому? В php я весьма слаб, пробовал конечно, но, итог предсказуем. Помогите, друзья! Огорчение

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB