Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с сессиями

 PHP.SU

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


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

> Без описания
st1kkk
Отправлено: 02 Января, 2010 - 17:15:46
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Вот я запустил сессию, как сделать так что бы сессия проверялась на каждом файле, и если нет сессии то выдавать сообщение что не авторизован
 
 Top
Ammy
Отправлено: 03 Января, 2010 - 10:40:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if ($_SESSION['authorized'] <> 1) {
  4.    echo 'Куда пошёл?';
  5.    die;
  6. }
  7.  


Включить (include) в начало каждого файла, которые работают с сессиями, отдельный файл, куда поместить проверку на существование сессии.
 
 Top
st1kkk
Отправлено: 03 Января, 2010 - 19:01:07
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Ammy спасибо, но вот возникла еще одна проблема

Вот код страницы с формами
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (empty($_SESSION['login']) or empty($_SESSION['password']))
  3. {
  4. echo 'Куда идешь!?';
  5. }
  6. else {
  7. include "bd.php";
  8. $result = mysql_query ("SELECT name_category, id FROM category");
  9. $myrow = mysql_fetch_array($result);
  10. echo "Выберите категорию";
  11. echo '<form action="new_story.php" method="post">';
  12. echo "<p><select name='cat'>";
  13. do
  14. {
  15. printf ("<option value='%s'>%s</option>", $myrow[id], $myrow[id]);
  16. }
  17. while ($myrow = mysql_fetch_array($result));
  18. echo "</select></p>";
  19. print <<<HERE
  20.     <body>
  21.     <form action="new_story.php" method="post">
  22.  <p>
  23.     <label>Название:<br></label>
  24.     <textarea name="name_story" cols="15"></textarea>
  25.     </p>
  26.     <p>
  27.  
  28.     <label>Описание:<br></label>
  29.     <textarea name="story" cols="30"></textarea>
  30.     </p>
  31.             <p>
  32.     <input type="submit" name="submit" value="Отправить">
  33.     </p></form>
  34.     </body>
  35. HERE;
  36.         }
  37. ?>


а вот обработчик

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (empty($_SESSION['login']) or empty($_SESSION['password']))
  4. {
  5. echo 'Куда идешь!?';
  6. }
  7. else
  8. {
  9. if (isset($_POST['name_story']))   { $name_story = $_POST['name_story'];}
  10. if (isset($_POST['story']))        { $story = $_POST['story'];}
  11. if (isset($_POST['cat']))          { $cat = $_POST['cat'];}
  12.  
  13. if (isset($_POST['story']))        {$story = $_POST['story']; if ($story == '') {unset($story);}}
  14. if (isset($_POST['new_story']))    {$new_story = $_POST['new_story']; if ($new_story == '') {unset($new_story);}}
  15. if (isset($_POST['cat']))          {$cat = $_POST['cat']; if ($cat == '') {unset($cat);}}
  16.  
  17. $name_story = stripslashes($name_story);
  18. $name_story = htmlspecialchars($name_story);
  19. $story = stripslashes($name_story);
  20. $story = htmlspecialchars($name_story);
  21. $cat = stripslashes($cat);
  22. $cat = htmlspecialchars($cat);
  23.  
  24. include "bd.php";
  25.  
  26. if (isset($story) && isset($new_story) && isset ($cat))
  27. {
  28.  $result = mysql_query ("INSERT INTO story (category,name_story, story) VALUES ('$cat','$name_story','$story')");
  29.  if ($result == 'true')
  30.   {
  31.    echo "Информация в базу добавлена успешно! ";
  32.    echo "<a href='index.php'>В админку</a>";
  33.   }
  34.  else
  35.   {
  36.    echo "Информация в базу не добавлена!";
  37.    echo "<a href='/index.php'>В админку</a>";
  38.   }
  39. }
  40.  else
  41.   {
  42.    echo 'Вы ввели не всю информацию';
  43.   }
  44. }
  45. ?>
  46.  


Скажите пожалуйста почему не заносится переменная cat?

(Отредактировано автором: 03 Января, 2010 - 19:22:16)

 
 Top
Ins1ne
Отправлено: 03 Января, 2010 - 20:29:25
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




st1kkk пишет:

$result = mysql_query ("INSERT INTO story (category,name_story, story, cat) VALUES ('$cat','$name_story','$story', $cat)")

может быть сюда следует добавить переменную cat, для того чтобы она заносилась?
 
 Top
st1kkk
Отправлено: 03 Января, 2010 - 20:43:49
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Ins1ne наврядли
Цитата:
$result = mysql_query ("INSERT INTO story (category,name_story, story) VALUES ('$cat','$name_story','$story')");


category - это в таблице строка
cat - переменная, которую беру из выпадающего списка
 
 Top
Ins1ne
Отправлено: 03 Января, 2010 - 20:48:05
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Ой завтыкал Улыбка
Тогда для дебага предлагаю использовать
PHP:
скопировать код в буфер обмена
  1. echo "INSERT INTO story (category,name_story, story) VALUES ('$cat','$name_story','$story')"

Посмотреть как заполняется сам запрос к базе и выложить его сюда, оттуда уже и будем плясать
 
 Top
st1kkk
Отправлено: 03 Января, 2010 - 20:55:21
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Ins1ne такого рода запрос как ты написал не выполняется Улыбка
 
 Top
Ins1ne
Отправлено: 03 Января, 2010 - 20:59:00
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




st1kkk пишет:
Ins1ne такого рода запрос как ты написал не выполняется Улыбка

Ну там нужно было доваить ";" (точку с запятой) в конце echo, т.е:
PHP:
скопировать код в буфер обмена
  1. echo "INSERT INTO story (category,name_story, story) VALUES ('$cat','$name_story','$story')";

И не пихать это в базу, а написать эту строчку перед :

Тогда ты увидишь как заполняется переменными эта строка.

(Отредактировано автором: 03 Января, 2010 - 21:01:29)

 
 Top
st1kkk
Отправлено: 03 Января, 2010 - 21:09:51
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Ins1ne INSERT оператор добавления в базу
 
 Top
Ins1ne
Отправлено: 03 Января, 2010 - 21:16:33
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




st1kkk пишет:
INSERT оператор добавления в базу

и что? ты что не понимаешь, что возможно переменная $cat пустая?
в общем http://phpfaq[dot]ru/debug тебе в помощь
 
 Top
Ammy
Отправлено: 04 Января, 2010 - 08:48:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Посмотрите вот на эти строки:

PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query ("SELECT name_category, id FROM category");
  3.  


Вы запрашиваете из базы название категории и идентификатор, верно?

PHP:
скопировать код в буфер обмена
  1.  
  2. printf ("<option value='%s'>%s</option>", $myrow[id], $myrow[id]);
  3.  


А выводите в опции только идентификатор, причём дважды. Зачем?

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $s = array('id' => 'тясыча', 'category' => 'валенок'); // создаём массив $s
  4.  
  5. printf('%s - тут id, %s - тут category', $s['id'], $s['category']); // выводим информацию, сохраняя последовательность
  6.  
  7. // Выведет: тысяча - тут id, валенок - тут category
  8.  
  9.  


Памятка. Улыбка

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <body>
  4. <form action="sa.php" method="post">
  5.     <p>
  6.         <select name="cat">
  7.             <option value='1'>Опция 1</option>
  8.             <option value='2'>Опция 2</option>
  9.         </select>
  10.     </p>
  11.  
  12.     <p>
  13.         <label>Название:<br></label>
  14.         <textarea name="name_story" cols="15"></textarea>
  15.     </p>
  16.     <p>
  17.         <label>Описание:<br></label>
  18.         <textarea name="story" cols="30"></textarea>
  19.     </p>
  20.         <p>
  21.         <input type="submit" name="submit" value="Отправить">
  22.     </p>
  23.  
  24. </form>
  25. </body>
  26.  
  27.  


Тестовая форма (не две, как у вас)

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. echo 'Идентификатор категории: ' . (isset($_POST['cat']))          . '<br />';
  4. echo 'Название: '                . (isset($_POST['name_story']))   . '<br />';
  5. echo 'Описание: '                . (isset($_POST['story']))        . '<br />';
  6.  
  7.  


Тестовый обработчик (очень простой) формы. Данные из формы передаются, включая идентификатор категории, который был упущен при передаче из вашей формы, которая, мягко говоря, имеет (раздвоение..) ошибки составления. Какие? Посмотрите, пожалуйста, на изображение, находящееся ниже.



PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if (empty($_SESSION['login']) or empty($_SESSION['password'])) die('Куда идешь!?');
  4. else {
  5.  
  6.     require_once('bd.php');
  7.  
  8.     $result = mysql_query ("SELECT name_category, id FROM category");
  9.  
  10.     echo 'Выберите категорию';
  11.     echo '<body><form action="new_story.php" method="post">';
  12.     echo '<p><select name="cat">';
  13.  
  14.     do {
  15.         printf("<option value='%s'>%s</option>", $myrow[id], $myrow[name_category]);
  16.     } while ($myrow = mysql_fetch_array($result));
  17.  
  18.     echo '</select></p>';
  19.     echo <<<HERE
  20.             <p>
  21.                 <label>Название:<br></label>
  22.                     <textarea name="name_story" cols="15"></textarea>
  23.             </p>
  24.             <p>
  25.                 <label>Описание:<br></label>
  26.                     <textarea name="story" cols="30"></textarea>
  27.             </p>
  28.                 <p>
  29.                 <input type="submit" name="submit" value="Отправить">
  30.             </p>
  31.         </form>
  32.     </body>
  33.     HERE;
  34.  
  35. }
  36.  


Попробуйте вот это. Две формы в одной.

(Отредактировано автором: 04 Января, 2010 - 10:07:17)

 
 Top
st1kkk
Отправлено: 04 Января, 2010 - 10:07:37
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Ammy спасибо большое, там где я два раза выводил id то я проверял выводится ли с базы ид, но я проблему решил чуток проще Улыбка я нашел ошибку в коде, у меня форма открывалась 2 раза а закрывалась 1, поэтому переменная cat не попадала Улыбка но все равно спасибо за консультацию Улыбка
 
 Top
Ammy
Отправлено: 04 Января, 2010 - 10:09:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Я написала о форме, именно это и было основной ошибкой, посмотрите. Обновите страничку, там я ещё прикрепила изображение.
(Добавление)
Ну значит на день опоздала с ответом. Улыбка Извиняюсь, меня вчера на форме не было.

(Отредактировано автором: 04 Января, 2010 - 10:11:37)

 
 Top
st1kkk
Отправлено: 04 Января, 2010 - 10:20:19
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Ammy скажите пожалуйста, а при обработке переменных у меня нет ошибок?
 
 Top
Ammy
Отправлено: 04 Января, 2010 - 10:27:03
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Что за параметр new_story? Из формы такого не передаётся, он вам важен?
И зачем столько повторяющихся проверок на наличие одних и тех же параметров, передаваемых POST методом?

В остальном можно только сократить код в несколько раз, и обработать переменные, информация которых заносится в базу. Функция mysql_escape_string.

(Отредактировано автором: 04 Января, 2010 - 10:33:31)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB