Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: _SESSION

Сообщения:  [1-10]    [11-20]  [21-25] 

 
 автор: sim5   (03.04.2010 в 07:53)   письмо автору
 
   для: Лена   (02.04.2010 в 23:23)
 

А что нельзя поместить в индексный файл до любого вывода блок:
if($_GET['upl']) отдаем exit ?
Да и у вас, выше, обращение идет к другому скрипту. Что-то не так, похоже на то, будто вы пытаетесь получить 4 таким образом:
4 = 6-2+2-2, где явно есть лишние операции. Если через сессию удается, почему не должно работать напрямую?
upload - это загрузка на сервер, имя "девочке" неудачное выбрано ;-)

  Ответить  
 
 автор: neadekvat   (02.04.2010 в 23:47)   письмо автору
 
   для: Лена   (02.04.2010 в 23:43)
 

Сделайте переадресацию, что-то вроде
"Скачивание файла начнется сиеминутно, если не началась - нажмите на ссылку" и редирект на скрипт, отдающий файл.
Если же и эту страницу надо упустить, тогда, пардон, о каком html-коде мы говорим, который вам там заголовок мешает послать?

  Ответить  
 
 автор: Лена   (02.04.2010 в 23:43)   письмо автору
 
   для: neadekvat   (02.04.2010 в 23:37)
 

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

  Ответить  
 
 автор: neadekvat   (02.04.2010 в 23:37)   письмо автору
 
   для: Лена   (02.04.2010 в 23:23)
 

Первая страница (index.php)
<a href="book.php?id=$id">Some Book</a>
<a href="book.php?id=$id">Some Book</a>
<a href="book.php?id=$id">Some Book</a>

Вторая страница (book.php)
<?php
$id 
intval($_GET['id']);
// запросы
?>
Чтобы скачать эту книгу, нажмите на ссылку ниже:
<a href="download.php?id=$id">Скачать</a>


И уже download.php только отдает книжку либо выводит предупреждение, что книжки не существует.
Такая схема не устраивает? И сессии ни к чему..

  Ответить  
 
 автор: Лена   (02.04.2010 в 23:23)   письмо автору
 
   для: Trianon   (02.04.2010 в 18:01)
 

Идея плохая, согласна.
Объясняю и вам, и sim5, почему так делаю.
У меня есть файл index.php. В нем и идет блок ссылок на скачивание книг, ид`ы которых берутся из базы. Допустим, я передаю ид в ссылке: <a href='index.php?upl=$row['id']'></a>
И потом проверяю по условию: пришел гет-параметр, я даю книжку на скачивание.
Но. Чтобы отдать книгу, надо послать соответствующие заголовки. И у меня тут такая ситуация... У меня там выше уже есть вывод html и убрать его я никак не могу. Получается заголовки тогда у меня не отправляются. Значит, нужно делать переход на другой скрипт, который и даст возможность безболезненно отправлять эти заголовки.
Ерунда, конечно, получилась, согласна, но по-другому никак. И кстати до сих пор пока еще идея эта не сработала.

>Плохая, например (но необязательно ограничиваясь) тем, что может быть несколько процессов, параллельно заполняющих эту самую SESSION-переменную. И затирающих один другого.

Как могут быть параллельные запросы, если информация из базы выбирается последовательно и последовательно заполняется массив SESSION?

  Ответить  
 
 автор: Trianon   (02.04.2010 в 18:01)   письмо автору
 
   для: Лена   (01.04.2010 в 16:13)
 

>Я хочу запомнить id книги в сессии и на следующей странице его использовать, чтобы знать,

Это плохая идея.
Разве только есть существенные факторы, которые препятствуют возможности передачи ключевой информации о книге в самом запросе.

Плохая, например (но необязательно ограничиваясь) тем, что может быть несколько процессов, параллельно заполняющих эту самую SESSION-переменную. И затирающих один другого.

  Ответить  
 
 автор: sim5   (02.04.2010 в 17:19)   письмо автору
 
   для: Лена   (02.04.2010 в 16:55)
 

$_SESSION['ids'] = array() нужно объявлять вне цикла.
$arr[] = $row['id'] и $_SESSION['ids'] = $arr - вообще не нужно.
в цикле:
$_SESSION['ids'][$i+1] = $row['id'];

Еще раз вопрос - зачем этот промежуточный массив в сессии, почему нельзя указать id как параметры в ссылках?

  Ответить  
 
 автор: Лена   (02.04.2010 в 16:55)   письмо автору
 
   для: sim5   (02.04.2010 в 15:48)
 

Все правильно вы понимаете.
Пока не получилось.
Сделала:
for($i=0;$row = mysql_fetch_assoc($res);$i++){
//другой код
$_SESSION['ids'] = array();
$arr[] = $row['id'];
$_SESSION['ids'] = $arr;
//$_SESSION['ids'] = array(1=>125, 234, 187);
echo '<a href="common_files/upload2.php?up=' . $row['id'] . '">Завантажити уривки з книги&quot;' . $row['title'] . '&quot;</a>';
}

Индекс первого элемента в массиве сессии должен быть 1. А у меня 0, потому как цикл, который выводит из базы, идет с нуля. Как сделать, чтобы первый элемент в массиве сессий шел с 1?

  Ответить  
 
 автор: sim5   (02.04.2010 в 15:48)   письмо автору
 
   для: Лена   (02.04.2010 в 15:29)
 

Если к вам обратятся - "Подайте, пожалуйста", то сможете ли вы даже при наличии "волшебного" слова понять, что вас просят подать? Ведь нет. Тогда почему вы считаете, что по запросу common_files/upload2.php можно догадаться чего запрашивают?

>Как можно из приходящего массива выбрать только одно значение.

Массив ни из чего и ни куда у вас не приходит, вы его формируете в сесси на предыдущей странице. Хотите вы скрыть id, пожалуйста, формируйте массив так, чтобы он имел вид, например:

$_SESSION['ids'] = array(1=>125, 234, 187);

а в ссылках указываете индекс элемента нужного вам id:

common_files/upload2.php?i=1
common_files/upload2.php?i=2
common_files/upload2.php?i=3

Получаете:

$gid = isset($_GET['i']) ? (int)$_GET['i'] : 0;
$id = $_SESSION['ids'][$gid] ? $_SESSION['ids'][$gid] : 0;
echo $id;

Либо я просто не понимаю чего вы хотите.

  Ответить  
 
 автор: Лена   (02.04.2010 в 15:29)   письмо автору
 
   для: sim5   (02.04.2010 в 13:55)
 

>и что чему принадлежит?

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

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-25] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования