PHP.SU

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

Страниц (8): « 1 2 3 4 5 6 [7] 8 »

> Найдено сообщений: 117
Perun Отправлено: 06 Марта, 2017 - 16:30:21 • Тема: передача параметра из БД между скриптами • Форум: Вопросы новичков

Ответов: 4
Просмотров: 230
ОК. Спасибо.
Perun Отправлено: 06 Марта, 2017 - 15:53:06 • Тема: передача параметра из БД между скриптами • Форум: Вопросы новичков

Ответов: 4
Просмотров: 230
valentinnew пишет:
Если ты откроешь в одной вкладке одну новость, потом в другой - другую, потом обновишь первую, то там будет отображаться вторая новость => Нелогичное поведение.

Сколько новостей, столько и переменных можно установить
(Добавление)
Первый вариант я и поставил первым, т.к. мне больше нравится.
Perun Отправлено: 06 Марта, 2017 - 15:32:01 • Тема: передача параметра из БД между скриптами • Форум: Вопросы новичков

Ответов: 4
Просмотров: 230
Есть блок вывода новостей. Для каждой новости есть кнопочка для перехода к полной новости. У меня дилемма, откуда правильно,лучше получать эту самую полную новость.
У меня навскидку варианты:

1. Передавать по клику кнопки через GET 'id' конкретной новости. делать запрос в БД по id, затем выводить полученную из БД новость на отдельной страничке, куда передавали id.

2. При выводе всего списка новостей, изначально запоминать и полную новость в какой нибудь сессионной переменной и на страничке конкретной новости читать полную новость из сессионной переменной.

3. Вариация второго варианта - только передавать полную новость не через сессионную переменную, а через POST форму в скрытом поле передавать полную новость из изначального запроса, который был выполнен для вывода списка всех новостей на страничку конкретной новости.
Perun Отправлено: 03 Марта, 2017 - 21:37:45 • Тема: Проблема с ЧПУ • Форум: Вопросы новичков

Ответов: 5
Просмотров: 380
Строитель пишет:
Внутри пхп-файла.

Тогда не получится. Это же представление. И в маршрутизаторе идет вызов именно html файлов. И все эти три файла из одного модуля - это именно представления. Просто три разные - в зависимости от состояния приложения. Поэтому я их и объединил в один html файл.
Строитель пишет:
Если я не ошибаюсь, расширение файла с пхп кодом внутри не имеет значения только в том случае, если этот файл (в вашем случае *.html) подключается в пхп файл, и если в этом (*.html) файле пхп код снабжён соответствующими открывающими/закрывающими пхп тегами.

Я не про синтаксис. Вопрос как раз в неписаных правилах..
Perun Отправлено: 02 Марта, 2017 - 22:06:12 • Тема: Проблема с ЧПУ • Форум: Вопросы новичков

Ответов: 5
Просмотров: 380
Не с первого раза разобрался. А теперь появились вопросы:

Если я правильно понял. данный вариант предлагается взамен моего варианта, но все внутри того же html файла?
Меня этот меммент волновал в первую очередь - полностью код php в html файле. Насколько это корректно? Но роутер в точке входа не очень хочется обременять дополнительными исключениями, тем более ради одного модуля.

Другой момент - Может это только мне и по неопытности - обработка сложная/замысловатая(хотя может это мне так кажется, я функциями поиска в массиве и файлов не пользовался) на первый взгляд и объем кода не меньше, чем в первом варианте, в чем преимущества?

И попутно к этому же вопрос: Я несмотря на то, что почитал в разных источниках про file_exists, не понял, где конкретно будет вестись поиск? Весь сервер лопатить или только в пределах сайта и сколько времени будет занимать сам поиск?

П.С.: В 10 и 11 строках наверное расширения html должны быть указаны?
Perun Отправлено: 02 Марта, 2017 - 08:53:49 • Тема: работа со строкой • Форум: Вопросы новичков

Ответов: 4
Просмотров: 274
Sail пишет:
ещё это действие выполняет функция rtrim()

Спасибо! Искал что-то похожее- не видел...
Perun Отправлено: 02 Марта, 2017 - 00:22:40 • Тема: Проблема с ЧПУ • Форум: Вопросы новичков

Ответов: 5
Просмотров: 380
Опять таки очередная проблема.. :
У меня практически везде структура: МОДУЛЬ+ФАЙЛ+КЛЮЧИ-ПАРАМЕТРЫ и название файла представления совпадает с названием модуля.
Есть один модуль(app), в котором в зависимости от определенных условиы выводится три разные формы = три разных независимых файла с формами. Названия у них разные, поэтому в общий маршрутизатор они не особо вписываются. Нужно в самом маршрутизаторе прописывать относительно много условий. После многочасового мозгового штурма я сделал так: сделал один app.html файл , а в этом файле прописал минимаршрутизатор для этих трех файлов представления:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ($_GET['key1'] == 'start') {
  3.         include 'start.html';
  4. }
  5. elseif ($_GET['key1'] == 'go') {
  6.         include 'go.html';     
  7. }
  8. elseif ($_GET['key1'] == 'over') {
  9.         include 'over.html';
  10. }
  11. ?>

Это часть основного маршрутизатора. отвечающего за вывод представления:
PHP:
скопировать код в буфер обмена
  1. include '/skins/'.MAIN.'/'.$module.'/'.$page.'.html';

С одной стороны - работает, и основной маршрутизатор теперь выглядит просто и понятно, с другой стороны - имею html файл чисто с php кодом.. Радость
Выглядит бредово, но другое мне в голову не приходит. Может подкините идей решения вопроса?
Perun Отправлено: 01 Марта, 2017 - 18:39:00 • Тема: работа со строкой • Форум: Вопросы новичков

Ответов: 4
Просмотров: 274
Ок. Спасибо.
Perun Отправлено: 01 Марта, 2017 - 18:21:34 • Тема: работа со строкой • Форум: Вопросы новичков

Ответов: 4
Просмотров: 274
День добрый!
Есть задача - если в строке последний символ например слеш, нужно вернуть строку без слеша. Какими средствами это правильно решать? Тут чисто строковые функции применять не очень наверное правильно? С регулярными выражениями(если они тут в помощь) - пока не очень дружу, только в планах.

На строковых функциях я сделал, но наверное это похоже на чесание левого уха правой рукой...

PHP:
скопировать код в буфер обмена
  1. $test = 'test';
  2. $len = strlen($test);
  3. $pos = strrpos($test, '/');
  4. if ($len == $pos + 1) {
  5.         $end = substr($test, 0, $pos);
  6. }
  7. else { $end = $test;}

Какие еще варианты решения вопроса есть?
Perun Отправлено: 28 Февраля, 2017 - 08:50:01 • Тема: Проблема с ЧПУ • Форум: Вопросы новичков

Ответов: 5
Просмотров: 380
Перехожу на ЧПУ, столкнулся с проблемой, не могу отловить причину. может кто подскажет:
Схема у меня такая: Если после index.php? был один параметр(page=...) - это страница представления без скрипта, просто статичная html страница(в качестве модуля подключался дефолтный), если два параметра(module=...&page=...), первый соответственно название модуля, второй - имя скрипта. Т.е. МОДУЛЬ+ФАЙЛ в любом случае, а файл или php или html в зависимости от того, был указан модуль в параметрах или нет.
В ядре у меня вот такие подключения:
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['module'], $_GET['page'])) { include '/modules/'.$module.'/'.$page.'.php'; }
  2. include '/skins/'.SKIN.'/static/index.html';


Если в адресной строке указать только один параметр, вывод идет в браузер как положено, если два параметра(есть модуль и скрипт) - правильный модуль подгружается, правильный скрипт работает, и даже разметка есть, но не учитываются стили. Не могу понять, почему теряются..

Это htaccess:
CODE (htmlphp):
скопировать код в буфер обмена
  1. AddDefaultCharset UTF-8
  2. php_flag dysplay_errors ON
  3. php_value mbstring.internal_encoding UTF-8
  4. php_flag magic_quotes_gpc off
  5. php_flag register_globals off
  6.  
  7. RewriteEngine on
  8.  
  9. RewriteCond %{REQUEST_FILENAME} !-f
  10. RewriteCond %{REQUEST_FILENAME} !-d
  11.  
  12. RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

(Добавление)
Причину нашел, но чисто интуитивно. Я не понял, почему так происходит, может кто посветит...
Файлы представления просто не видели стили, находящиеся в общей папке для всего сайта. У меня предусмотрено наличие разных скинов для сайта. Так, стили для конкретного скина(в моем случае - дефолтного) заработали после копирования стилей и изображений в папку конкретного скина(в моем случае - дефолтного)
Perun Отправлено: 25 Февраля, 2017 - 20:32:44 • Тема: Не редиректит • Форум: Вопросы новичков

Ответов: 5
Просмотров: 278
Спасибо. теперь вижу какая проблема с переадресацией. Спасибо за вариант решения! Но насколько я понимаю - это "костыль" и нужно пересматривать решение с переадресией на ошибку?
И попутно вопрос: Стоит ли озаботиться обработкой такой ошибки? Я имею в виду - переадресации, обработка и вывод ошибок на экран, или пусть этим браузер занимается? Это по сути довольно не стандартная ситуация - подделка куки, либо еще вариант - какие-то ошибки в БД
Как вариант, возможно проще, и мне так логически понятнее - просто удалять куку у клиента?
Плюсик за помощь не имею технической возможности поставить...
Perun Отправлено: 25 Февраля, 2017 - 19:48:55 • Тема: Не редиректит • Форум: Вопросы новичков

Ответов: 5
Просмотров: 278
Строитель пишет:
А редирект выполняется на эту же страницу? Я так понимаю, весь ваш этот код прописан в файле index.php, и редирект выполняется на него же, но с передачей некоторых get-параметров?

Скрипт отдельный, но инклюдится каждый раз в index.php. Наверное, нельзя сказать, что редиректит прям на себя, а в части представления через маршрутизатор подключается HTML файл exit.html.

Добавил проверку, работает, но раз 10 уже перечитал, никак не въеду в суть этой проверки в контексте.... Можете объяснить ход мыслей для тех кто в танке??
То, кудя я делал переадресацию мне понятно. а тут ступор... Причем в другах участках кода такая же переадресация, и там редиректит без проблем.
Perun Отправлено: 25 Февраля, 2017 - 18:34:19 • Тема: Не редиректит • Форум: Вопросы новичков

Ответов: 5
Просмотров: 278
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $_SESSION['er'] = array();
  3. if (isset($_POST['log_in'], $_POST['login'], $_POST['pass'])) {  // If the LOG IN button was clicked    
  4.    if (!empty($_POST['login']) && !empty($_POST['pass'])) {
  5.       $auth = query("  SELECT * FROM `users`
  6.                       WHERE
  7.                         `login`    = '".arrrealstr($_POST['login'])."'
  8.                       AND
  9.                         `password` = '".passhash($_POST['pass'])."'                            
  10.                       LIMIT 1
  11.                   ");      
  12.         if (mysqli_num_rows($auth)) {  //  If requested login and pass exist in DB        
  13.            $str = mysqli_fetch_assoc($auth);        
  14.              if ($str['activate'] == '1') {  // If an account is activated
  15.                 if (isset($_POST['auto'])) {  // If the REMEMBER ME option is checked
  16.                    setcookie('login', (passhash($str['login']).$str['password']), time() +36000000, '/'); // Set the user cookie
  17.                 }            
  18.                 $_SESSION['login'] = $str; // Set a session for this user
  19.                 $status = 1; // Set the variable for choosing authorization html form in the view part
  20.                 $login = $_SESSION['login']['login'];
  21.                 header("Location: ".'/index.php?'.$_SERVER['QUERY_STRING']); // Redirect to the refferer
  22.                 exit();          
  23.              }
  24.              else { $_SESSION['er'] = 'This user is registered, but not activated.'; }
  25.         }
  26.         else { $_SESSION['er'] = 'There is no registered user with entered login and password on site.'; }
  27.    }
  28.    else { $_SESSION['er'] = 'The LOGIN and PASSWORD fields cannot be empty!'; }
  29. }
  30. else {
  31.   if(isset($_SESSION['login'])) { // If the LOG IN button is not clicked but a session exists
  32.       $res = query("  SELECT * FROM `users`
  33.                      WHERE
  34.                         `login`    = '".arrrealstr($_SESSION['login']['login'])."'                            
  35.                      LIMIT 1
  36.                        ");
  37.       if (mysqli_num_rows($res)) {  
  38.          $check = mysqli_fetch_assoc($res); // Get user data for the active session
  39.          if ($check['activate'] == 2) { // If the ban flag in DB is set
  40.             if (isset($_COOKIE['login'])) {
  41.                setcookie('login', (passhash($_SESSION['login']['login']).$_SESSION['login']['password']), time() -38000000, '/');
  42.              }
  43.              unset($_SESSION['login']);
  44.              $_SESSION['exit'] = 'Your account is disactivated now!';
  45.              header('Location: '.DOMAIN.'/index.php?page=exit'); // Redirect to the exit page
  46.              exit();
  47.          }
  48.          else {
  49.             $status = 1;
  50.             $login = $check['login'];
  51.          }        
  52.       }
  53.       else {
  54.          unset($_SESSION['login']);
  55.          $_SESSION['exit'] = 'There is a session\'s error.';
  56.          header('Location: '.DOMAIN.'/index.php?page=exit');
  57.          exit();
  58.       }
  59.   }    
  60.   elseif(isset($_COOKIE['login'])) { // If a user cookie exists  
  61.         $res = query("  SELECT * FROM `users`
  62.                        WHERE
  63.                        `hash`    = '".passhash($_COOKIE['login'])."'                            
  64.                        LIMIT 1
  65.                    ");
  66.         if (mysqli_num_rows($res)) {
  67.             $check = mysqli_fetch_assoc($res);
  68.             $_SESSION['login'] = $check;  // Set a user session
  69.             $status = 1;
  70.             $login = $_SESSION['login']['login'];              
  71.         }
  72.         else {
  73.            $_SESSION['exit'] = 'There is a cookie\'s error.';
  74.            header('Location: http://www.d.local/index.php?page=exit');
  75.            exit();
  76.          }
  77.  
  78.      }else { $_SESSION['er'] = 'Enter LOGIN and PASSWORD to enter the site.'; }  
  79. }
  80. if (isset($_POST['log_out'], $_SESSION['login'])) {  // If a user session exists and the LOG OUT button is clicked
  81.    
  82.    if (isset($_COOKIE['login'])) {
  83.       setcookie('login', (passhash($_SESSION['login']['login']).$_SESSION['login']['password']), time() -38000000, '/');
  84.    }
  85.    unset($_SESSION['login']);  // Unset user session if logout  
  86.    header("Location: ".'/index.php?'.$_SERVER['QUERY_STRING']); // Redirect to the refferer
  87.    exit();
  88. }
  89. // If the "REGISTER" button is clicked
  90. if (isset($_POST['reg'])) {
  91.   header("Location: ".'/index.php?module=reg&page=reg'); // Redirect to the "REGISTER" form if the "REGISTER" button is clicked
  92.   exit();
  93. }
  94. ?>

В 74 строке по редиректу выдает ошибку браузера - проблему с переадресацией. Не может корректно завершить редирект...
Не могу найти причину..
Perun Отправлено: 21 Февраля, 2017 - 07:27:34 • Тема: Редирект с выводом сообщения • Форум: Вопросы новичков

Ответов: 3
Просмотров: 408
спасибо
Perun Отправлено: 20 Февраля, 2017 - 20:50:08 • Тема: Редирект с выводом сообщения • Форум: Вопросы новичков

Ответов: 3
Просмотров: 408
Можно ли на PHP организовать вывод сообщения на экран браузера, небольшую задержку и редирект по адресу?

Страниц (8): « 1 2 3 4 5 6 [7] 8 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB