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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переход по ссылке и возвращение обратно 
V
    Опции темы
Superklug
Дата 16.10.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток!
Изучаю php недавно. И вообще с WEB-программированием пока на Вы.. Поэтому прошу помощи.
Задача следущая: на странице отображена форма, после нажатия кнопки submit генерируется ссылка, по которой нужно перейти... Делаю так:

Код

<?php
    if(isset($_POST['Text']))
    {
        $Text=$_POST['Text'];
        $URL="http://somesite.com?text=".rawurlencode($Text);
        $h="Location: ".$URL;
        header($h);
    }
?>    

<html>
    <head>
        <title>MyPage</title>
    </head>
    <body>
        <form name="MyForm" method=POST> 
            <table>
                <tr><td align=right>Сообщение:</td>
                <td><input type=text name=Text></td></tr> 
                <tr><td>&nbsp</td><td><input type=submit value="Отправить"></td></tr> 
            </table>
        </form> 
    </body>
</html>


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

Я пробовал сделать это с помощью фреймов. Т.е. в одном фрейме моя страница, а в другом, с размерами 0x0, происходит переход по ссылке. Но у меня толком ничего не получилось(((

Пожалуйста помогите советами и примерами. Заранее очень благодарен!
PM MAIL   Вверх
bars80080
Дата 16.10.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



тебе, что, нужно просто дёрнуть за ссылку, чтобы там некий счётчик приплюсовался?
вместо перехода просто открой её:
Код

<?php
    if(isset($_POST['Text']))
    {
        $Text=$_POST['Text'];
        $URL="http://somesite.com?text=".rawurlencode($Text);
        $h=fopen($URL,'r');
        if($h) { $r = fread($h, 1024); fclose($h); }
    }
?>    
или нужно, чтобы заход произошёл от ip пользователя?
PM MAIL WWW   Вверх
Superklug
Дата 16.10.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



bars80080, fopen подразумевает, что у меня на сайте есть файл somesite.php? Мне нужно посетить чужой сайт.

Я попробовал и вылезла ошибка: Warning: fopen(http://...): failed to open stream: Operation not permitted in ... on line 7
PM MAIL   Вверх
bars80080
Дата 16.10.2008, 13:22 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



в fopen ты суёшь обычный url, на который ты у себя в браузере можешь открыть страницу

Добавлено через 27 секунд
даже $h = 'http://yandex.ru';

попробуй ещё раз
PM MAIL WWW   Вверх
Superklug
Дата 16.10.2008, 13:26 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Честно говоря не уверен... Наверное это не сайт, а что-то вроде скрипта. Выглядит так: http://somesite/script.fpl?text=Hello
PM MAIL   Вверх
unicross
Дата 16.10.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Superklug, а не проще открыть ссылку в новом окне?

Код

 <form name="MyForm" method=POST target="_blank">


Кстати, после перенаправления лучше закончить выполнение скрипта

Код

        $h="Location: ".$URL;
        header($h);
        exit;

PM MAIL WWW   Вверх
Superklug
Дата 16.10.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Может все таки с фреймами возможно?
PM MAIL   Вверх
bars80080
Дата 16.10.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



а может всё-таки расскажешь, что ты хочешь сделать?
и откуда такая ссылка, о которой ты так мало знаешь?
PM MAIL WWW   Вверх
unicross
Дата 16.10.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Superklug, тогда получайте страницу с помощью fopen() или CURL. 

Или изучайте Модальные диалоговые окна в JavaScript. Кстати, работает не всегда. Зависит от настроек браузера.
PM MAIL WWW   Вверх
Superklug
Дата 16.10.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Добавлено через 1 минуту и 34 секунды
unicross, fopen почему-то не работает( Может потому что *fpl - это не файл, такой как html или php...
С остальным щас попробую разобраться. 
PM MAIL   Вверх
bars80080
Дата 16.10.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(Superklug @  16.10.2008,  20:26 Найти цитируемый пост)
fpl - это не файл, такой как html или php...

это не должно влиять. либо ссылка - это сслыка, и тогда сервер пофигу каким макаром к нему обращаются, либо это и не сылка вовсе, а скажем, javascript команда

ещё может заморочка, что сервер опрашивает тебя, скажем на предмет кук, а твой сервак ессно молчит

но всё равно мало информации....
PM MAIL WWW   Вверх
unicross
Дата 16.10.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Superklug @  16.10.2008,  20:26 Найти цитируемый пост)
unicross, fopen почему-то не работает(


fopen можно отключить в php.ini

Код

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = Off


Проверьте настройки.

Цитата

Может потому что *fpl - это не файл, такой как html или php...


Главное чтобы этот файл выдавал текстовую информацию.
PM MAIL WWW   Вверх
Superklug
Дата 16.10.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я больше и не знаю( Плохо я понимаю как это все устроено.
Факт, что если вставить строку http://somesite/script.fpl?text=Hell&user=XXX в строку браузера, то все работает.. Это при условии, что это окно браузера появилось из того, где игра открыта. И если переходить по ссылке через header, тоже все работает. Просто это не красиво... Пользователь ввел сообщение, нажал отправить и увидел белый экран... Куда приятней было бы, если бы на экране сохранилась форма, да еще и надпись, мол сообщение доставлено)

Смотрю про CURL. На сколько понял, не на каждом хостинге поддерживается... Это так?

Добавлено через 1 минуту и 33 секунды
Цитата(unicross @  16.10.2008,  20:42 Найти цитируемый пост)
Главное чтобы этот файл выдавал текстовую информацию. 

Он не выдает информацию.. Если ввести в строку адреса, то будет просто белый экран. Зато в чате игры появится твое сообщение...
PM MAIL   Вверх
Superklug
Дата 16.10.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Этот код хоть и не выдает ошибку, но не работает((
Код

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://somesite/script.fpl?text=Hello");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);

PM MAIL   Вверх
unicross
Дата 16.10.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Superklug @  16.10.2008,  12:29 Найти цитируемый пост)
Я пробовал сделать это с помощью фреймов. Т.е. в одном фрейме моя страница, а в другом, с размерами 0x0, происходит переход по ссылке. Но у меня толком ничего не получилось(((


Советую вернуться к этому способу. Пример вам в помощь.

Основной файл

Код

<HTML>
<HEAD>
<script>
<!--
function f_click() {
   var frm = document.getElementById('MyForm');
   var text1 = frm.Text1.value;
   var frame1 = document.getElementById('frame1');
   frame1.src = "tests.php?text1=" + text1;
   event.returnValue = false;
}
//-->
</script>
</HEAD>
<BODY>
      <form name="MyForm" id="MyForm" onsubmit="f_click();">
            <table>
                <tr><td align=right>Сообщение:</td>
                <td><input type=text name="Text1"></td></tr> 
                <tr><td>&nbsp</td><td><input type=submit value="Отправить"></td></tr> 
            </table>
        </form> 
<IFRAME src="tests.php" name="frame1" id="frame1" width="200" height="200">

</BODY>
</HTML>


код файла tests.php

Код

<?php
$text = $_GET['text1'];
if ($text) {
   echo $text;
}
else {
   echo "Ничего не передали";
}
?>


Выставить width="0" height="0" вы сможете и без меня. Заменить tests.php также сможете.

Если у вас чат, то пользователь увидет свое сообщение и без подтверждения.

PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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