|
|
|
|
|
для: Лена
(02.04.2010 в 23:23)
| | А что нельзя поместить в индексный файл до любого вывода блок:
if($_GET['upl']) отдаем exit ?
Да и у вас, выше, обращение идет к другому скрипту. Что-то не так, похоже на то, будто вы пытаетесь получить 4 таким образом:
4 = 6-2+2-2, где явно есть лишние операции. Если через сессию удается, почему не должно работать напрямую?
upload - это загрузка на сервер, имя "девочке" неудачное выбрано ;-) | |
|
|
|
|
|
|
|
для: Лена
(02.04.2010 в 23:43)
| | Сделайте переадресацию, что-то вроде
"Скачивание файла начнется сиеминутно, если не началась - нажмите на ссылку" и редирект на скрипт, отдающий файл.
Если же и эту страницу надо упустить, тогда, пардон, о каком html-коде мы говорим, который вам там заголовок мешает послать? | |
|
|
|
|
|
|
|
для: 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 только отдает книжку либо выводит предупреждение, что книжки не существует.
Такая схема не устраивает? И сессии ни к чему.. | |
|
|
|
|
|
|
|
для: Trianon
(02.04.2010 в 18:01)
| | Идея плохая, согласна.
Объясняю и вам, и sim5, почему так делаю.
У меня есть файл index.php. В нем и идет блок ссылок на скачивание книг, ид`ы которых берутся из базы. Допустим, я передаю ид в ссылке: <a href='index.php?upl=$row['id']'></a>
И потом проверяю по условию: пришел гет-параметр, я даю книжку на скачивание.
Но. Чтобы отдать книгу, надо послать соответствующие заголовки. И у меня тут такая ситуация... У меня там выше уже есть вывод html и убрать его я никак не могу. Получается заголовки тогда у меня не отправляются. Значит, нужно делать переход на другой скрипт, который и даст возможность безболезненно отправлять эти заголовки.
Ерунда, конечно, получилась, согласна, но по-другому никак. И кстати до сих пор пока еще идея эта не сработала.
>Плохая, например (но необязательно ограничиваясь) тем, что может быть несколько процессов, параллельно заполняющих эту самую SESSION-переменную. И затирающих один другого.
Как могут быть параллельные запросы, если информация из базы выбирается последовательно и последовательно заполняется массив SESSION? | |
|
|
|
|
|
|
|
для: Лена
(01.04.2010 в 16:13)
| | >Я хочу запомнить id книги в сессии и на следующей странице его использовать, чтобы знать,
Это плохая идея.
Разве только есть существенные факторы, которые препятствуют возможности передачи ключевой информации о книге в самом запросе.
Плохая, например (но необязательно ограничиваясь) тем, что может быть несколько процессов, параллельно заполняющих эту самую SESSION-переменную. И затирающих один другого. | |
|
|
|
|
|
|
|
для: Лена
(02.04.2010 в 16:55)
| | $_SESSION['ids'] = array() нужно объявлять вне цикла.
$arr[] = $row['id'] и $_SESSION['ids'] = $arr - вообще не нужно.
в цикле:
$_SESSION['ids'][$i+1] = $row['id'];
Еще раз вопрос - зачем этот промежуточный массив в сессии, почему нельзя указать id как параметры в ссылках? | |
|
|
|
|
|
|
|
для: 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'] . '">Завантажити уривки з книги"' . $row['title'] . '"</a>';
}
Индекс первого элемента в массиве сессии должен быть 1. А у меня 0, потому как цикл, который выводит из базы, идет с нуля. Как сделать, чтобы первый элемент в массиве сессий шел с 1? | |
|
|
|
|
|
|
|
для: Лена
(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;
Либо я просто не понимаю чего вы хотите. | |
|
|
|
|
|
|
|
для: sim5
(02.04.2010 в 13:55)
| | >и что чему принадлежит?
Вот это я и хочу узнать. Как можно из приходящего массива выбрать только одно значение. Ну сохраню я индексы массива в сессии, а дальше как? Другой скрипт получил этот массив с сессиями и как из него выбрать то, что нужно?
Получается нереальная задача.
Проще сделать переход на отдельную страницу книги и потом уже там давать ссылку на скачивание. | |
|
|
|
|