Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP скрипт в html странице, И проблемы после этого. 
:(
    Опции темы
Mystery
Дата 3.3.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.2.2006

Репутация: нет
Всего: нет



Есть обычная html страничка в которой вместо картинок подставляется PHP скрипт.
<img src=”script.php”>
<img src=”script.php”>
Этот скрипт из указанной папки из файлов что там есть, выбирает рендомом один и подставляет.

Цитата

<?php
if ($dirs = opendir('./image')) {
while (false !== ($file = readdir($dirs))) {
if (preg_match("/^[a-zA-Z0-9]{6}\.(jpg|jpeg)/", $file))      {
$r[]=$file;
}
}
closedir($dirs);
}
$t=count($r);

header('location: image/'.$r[rand(0,$t-1)]);
?>


Проблема в том что если всё оставить в таком виде, то как я понимаю скрипт отрабатывает всего один раз и во всех местах где должны быть картинки подставляется всего одна (тоесть всего один раз отрабатывается скрипт.)

Эту проблему я обошел таким вот образом, я скрипт вызываю с каким-нибудь параметром, каждый раз с новым:
<img src=”script.php?q=dsf”>
<img src=”script.php?q=1”>

После этого всё работает нормально. Отсюда у меня вопрос, можно ли сделать так чтоб это все работало так как мне нужно без добавления параметров и как?

PM MAIL   Вверх
-=Ustas=-
Дата 3.3.2006, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Попробуй так:
Код

<?php

if ($dirs = opendir('./image')) {

    while (false !== ($file = readdir($dirs))) {
        if ($file == "." && $file == "..") {
            continue;
        } else {
            if (preg_match("/^[a-zA-Z0-9]{6}\.(jpg|jpeg)/", $file))      {
                $r[] = $file;
            }
        }
    }
    closedir($dirs);
}
$rand = mt_rand(0, count($r));

header('location: image/'.$r[$rand]);

?>

Добавлено @ 15:29
Подожди, так тебе нужно, чтоб твой скрипт выдал тебе все картинки из диры?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Mystery
Дата 3.3.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.2.2006

Репутация: нет
Всего: нет



Сотри сам скрипт выбирает рендомом одну картинку из диры и редиректит на неё.

Есть index.html страничка, на которой должны показываться куча картинок и рендомит этот скрипт выбрасывает картинку.
<img src=”script.php”>

Но если оставить вызов скрипта в таком виде, то я так понял скрипт загружается всего один раз, результатом будет 100 одинаковых картинок.

Если же скрипт вызывать с параметром каким угодно <img src=”script.php?q=1”>, тут главное чтоб параметр был каждый раз разный, тогда результатом будет 100 разных картинок... Причём сам параметр ни как не используется в скрипте, просто это даёт возможность отработать скрипту столько сколько нужно раз.. Хрен знает почему но это сработало.
Отсюда вопрос, можно ли сделать это как-то но чтоб скрипт вызывался без параметра.
PM MAIL   Вверх
z-END
Дата 3.3.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 5
Всего: 102



попробуй запретить кэширование скрипта script.php


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Mystery
Дата 3.3.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.2.2006

Репутация: нет
Всего: нет



Цитата(z-END @ 3.3.2006, 15:49)
попробуй запретить кэширование скрипта script.php

Я пробовал вставлять в пхп

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0

Не сработало
PM MAIL   Вверх
Ciber SLasH
Дата 3.3.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



После вставки заголовков очисти кэш в браузере.
PM   Вверх
Mystery
Дата 3.3.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.2.2006

Репутация: нет
Всего: нет



Цитата(Ciber SLasH @ 3.3.2006, 17:49)
После вставки заголовков очисти кэш в браузере.

Не понял.. как это сделать?
PM MAIL   Вверх
Ciber SLasH
Дата 4.3.2006, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Для FireFox: Ctrl+F5
Для IE и Opera: Ctrl+R
PM   Вверх
Mystery
Дата 4.3.2006, 04:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.2.2006

Репутация: нет
Всего: нет



Ребята вы наверное не понимаете проблему..

у меня есть одна хтмл страница в которой есть допустим 20 картинок, но в этом хтмл вместо путей к картинкам стоит путь к скрипту. тоесть я загружаю хтмл один раз, автоматом 20 раз загружается мой скрипт! Ни о каких Ctrl+R речи быть не может.

Скажите можно это как-то осуществить или ничего кроме как загрузки скрипта с параметром не получится?
PM MAIL   Вверх
Ciber SLasH
Дата 4.3.2006, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Скорее всего не получится без параметров. Браузер, по ходу, видя 2 одинаковых адреса у картинок, считает, что это одна и та же картинка и не обновляет вторую картинку, а просто берёт из первой и подставляет во вторую.
А почему бы не выводить нужное количество картинок сразу? Можно ведь написать к примеру так:
index.htm:
Код

<html>
<head>
...
<script type='text/javascript' src='script.php?m=10'></script>
</head>
....

в script.php:
Код

$imgPath = './image/';
$js = "function printImg() {\n";
for ($i = 0; $i < $_GET['m']; $i++) {
    $js .= "document.write('<img src=\'".$imgPath.rand(0, $_GET['m']).".jpg\'>');\n";
}
$js .= "}\n";
echo $js;

далее в нужном месте просто вызываешь функцию printImg():
index.htm:
Код

<body>
<script type='text/javascript'>printImg();</script>
</body>


Это сообщение отредактировал(а) Ciber SLasH - 4.3.2006, 07:20
PM   Вверх
wsr
Дата 4.3.2006, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: 1
Всего: 2



Попробуй заменить свой хеадер на
Код

    Header ( "Content-Type: image/gif" );
    $image = ImageCreateFromGIF ( "./img.gif" );
    ImageGIF ( $image );
    ImageDestroy ( $image );

тока поправь под себя!
Т.е. типа прям в наглую браузеру кидать разные картинки!
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
Mystery
Дата 5.3.2006, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.2.2006

Репутация: нет
Всего: нет



Я вот попробовал сделать что-то типа такого.. но какая-то фигня получается..

Код

<BODY>
<script>
function pics(){
e= Math.floor(Math.random()*10000000);
r = "pictures.php?q=" + e;
return r;
}
</script>
<table width=100%>
<tr>
<script>


</script>
<td><img src="javascript:document.write(pics());" border=0></td>

</tr>

</table>
</BODY>


кто-нибудь может подправить правильно яваскипт?
PM MAIL   Вверх
Ciber SLasH
Дата 5.3.2006, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Код

<BODY>
<script>
function pics(){
e= Math.floor(Math.random()*10000000);
r = "pictures.php?q=" + e;
return r;
}
onload = function () {
  document.getElementById('pic').src = pics();
}
</script>
<table width=100%>
<tr>
<script>
</script>
<td><img id='pic' border=0></td>
</tr>
</table>
</BODY>

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.