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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Переменная должна передаваться на др. страницу со страницы которая автоматически переходит на эту самую дрюстраницу!
 
 автор: SilentChild   (22.04.2008 в 14:30)   письмо автору
 
 

Здравствуйте, умы нашей великой страны!

Проблема в следующем:

Есть страничка с мета-тегом рефреш, как передать переменную с этой странички на ту на которую этот рефреш переходит?

Кто быстрей ответит, тот победил! Ура! =))))

   
 
 автор: SilentChild   (22.04.2008 в 14:32)   письмо автору
 
   для: SilentChild   (22.04.2008 в 14:30)
 

Вот так вот, примерно:


<html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset=windows-1251">
        <meta http-equiv="refresh" content="0; url=add_news.php">
        </head>
        </html>


куда здесь можно переменную впиндюрить чтобы она передалась на страницу add_news.php?

   
 
 автор: sim5   (22.04.2008 в 14:33)   письмо автору
 
   для: SilentChild   (22.04.2008 в 14:30)
 

добавить в урл: ?var1=param1&var2=param2... (вне конкурса).

   
 
 автор: SilentChild   (22.04.2008 в 14:42)   письмо автору
 
   для: sim5   (22.04.2008 в 14:33)
 

А как получить ее на следующей странице? Так:
$_GET['var1']
?

   
 
 автор: sim5   (22.04.2008 в 14:43)   письмо автору
 
   для: SilentChild   (22.04.2008 в 14:42)
 

Да.

   
 
 автор: SilentChild   (22.04.2008 в 14:47)   письмо автору
 
   для: sim5   (22.04.2008 в 14:43)
 

А если страница рефрешит на саму себя, и мне нужно сделать какое либо действие только когда переменные отправлены (тоесть когда срефрешено уже), то как условие поставить для выполнения того что я хочу?

   
 
 автор: sim5   (22.04.2008 в 14:53)   письмо автору
 
   для: SilentChild   (22.04.2008 в 14:47)
 

Ну тогда незачем вам мета теги отправлять, а воспользуйтесь header. После того как определите эту переменную, отправляйте заголовок, а получение этой переменной проверяйте: if (isset($_GET['var'])) //ваше действие.

   
 
 автор: Valick   (22.04.2008 в 14:54)   письмо автору
 
   для: SilentChild   (22.04.2008 в 14:47)
 

А теперь ещё раз и по-русски)

   
 
 автор: SilentChild   (22.04.2008 в 15:03)   письмо автору
 
   для: Valick   (22.04.2008 в 14:54)
 

Неееет, мне без мета-тегов нельзя, ведь нужно чтобы сценарий перешел автоматически на самого себя после того как выполнит действие.
Например надо добавить данные в базу и срефрешить на этот же код, но заставить выполнять ту его часть, которая отобрафает что данные успешно добавлены!

   
 
 автор: Valick   (22.04.2008 в 15:05)   письмо автору
 
   для: SilentChild   (22.04.2008 в 15:03)
 

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

   
 
 автор: SilentChild   (22.04.2008 в 15:15)   письмо автору
 
   для: Valick   (22.04.2008 в 15:05)
 

АХТУНГ! Растолковываю:

1. Есть сценарий с формой;
2. Этот же сценарий обрабатывает добавление в базу данных значений введенных в форму;
3. Когда обработка добавления значений в базу заканчивается, то сценарий должен срефрешиться сам на себя, но в другую часть кода, которая смотрит ---- Агааа, срефрешился, тогда пора вывести сообщение что данные в базу добавлены!

   
 
 автор: sim5   (22.04.2008 в 15:17)   письмо автору
 
   для: SilentChild   (22.04.2008 в 15:15)
 

Ахтунг! А я вам думаете о чем-то другом говорю? Что мета тегом передать, что через header, разницы нет. Собственно вы просто себе проблему создаете, а все просто.)

   
 
 автор: sim5   (22.04.2008 в 15:10)   письмо автору
 
   для: SilentChild   (22.04.2008 в 15:03)
 

А я вам не предлагаю в header указывать URL Белого Дома в США. )

<?
//тут работа вашего скрипта, на каком-то этапе вы определись, что то-то надо передать
//что не знаю, может результат обработки данных из формы, например
$a = isset($_POST['var']) ? : -1;
//передаем это в заголовке и переходим на самого себя
header('location: main.php?my='.$a);
//а это проверка был ли переход с получением переменной my
if ($_GET['my']) //что-то делаем и все на этой же странице.
?>   

PS. Единственно, это, я бы обработку переменной полученной после перенапрвления поставил в начале скрипта, ну это собсвтенно дело вкуса, если только логика не требует иного.

   
 
 автор: SilentChild   (22.04.2008 в 15:24)   письмо автору
 
   для: sim5   (22.04.2008 в 15:10)
 

А header() где писать между <head></head>?
И что значат:
двоеточия и ?
а то чет я их не использовал никогда?

   
 
 автор: sim5   (22.04.2008 в 15:26)   письмо автору
 
   для: SilentChild   (22.04.2008 в 15:24)
 

Нет, это РНР отправляет заголовок, а не HTML мета данные. Я же вам написал, разве там есть HTML включения?

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

   
 
 автор: SilentChild   (22.04.2008 в 15:29)   письмо автору
 
   для: sim5   (22.04.2008 в 15:26)
 

И что значат:
двоеточия и ? 


а то чет я их не использовал никогда?

   
 
 автор: sim5   (22.04.2008 в 15:33)   письмо автору
 
   для: SilentChild   (22.04.2008 в 15:29)
 

Таков синтаксис. Читайте о заголовках.

   
 
 автор: SilentChild   (22.04.2008 в 15:36)   письмо автору
 
   для: sim5   (22.04.2008 в 15:33)
 

Все бы хорошо если бы по русски =)

   
 
 автор: sim5   (22.04.2008 в 15:49)   письмо автору
 
   для: SilentChild   (22.04.2008 в 15:36)
 

->

   
 
 автор: SilentChild   (22.04.2008 в 15:56)   письмо автору
 
   для: sim5   (22.04.2008 в 15:49)
 

УихАААА!! Все работает!! СПАСИБО, чувак!

   
 
 автор: SilentChild   (22.04.2008 в 16:22)   письмо автору
 
   для: SilentChild   (22.04.2008 в 15:56)
 

Еще вопросик:

У меня имеется код, который выполняется при условии:

if (isset($_POST['postedfoto']))
{....код.....
}


У меня есть ссылка:

<a href='add_news.php'>Перейти</a>

Можно ли с ссылкой что-нибудь сделать чтобы условие выполнилось?
Условие находиться на странице add_news.php

   
 
 автор: Valick   (22.04.2008 в 16:27)   письмо автору
 
   для: SilentChild   (22.04.2008 в 16:22)
 

if (isset($_REQUEST['postedfoto'])


<a href='add_news.php?postedfoto=blablabla'>Перейти</a>


Вот так должно срабатывать. Ссылкой ток гет можно передать.
Либо напарвить на другую страницу откуда отправить данные уже методом пост, но это гемор)

   
 
 автор: SilentChild   (23.04.2008 в 10:49)   письмо автору
 
   для: Valick   (22.04.2008 в 16:27)
 

<?php
//add_news.php
$a = isset($_POST['var']) ? : -1;
header('location: add_news.php?my=' $a);
//код по открытию базы и т.д.
//затем добавляем в базу данные:
$ins mysql_query("INSERT INTO news VALUES('" $newsdt "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')"$link_id);

//после того как данные добавятся страница переходит на саму себя и проверяет по переменной (my)  был ли переход
if ($_GET['my'])
{
    
//здесь возникает вопрос: как в этой части кода можно достать переменную $ins чтобы проверить:
    
if (!$ins)
    {
        echo 
"Данные не добавлены!";
    }
    
//можно ли в заголовке ее передать?    
}
?>

   
 
 автор: Valick   (23.04.2008 в 11:07)   письмо автору
 
   для: SilentChild   (23.04.2008 в 10:49)
 

Её ($ins) так же должна передавать страница самой себе методом гет.
А вообще я так до сих пор и не пойму ващей логики работы скрипта, но не вдаваясь в подробности выглядит это всё накворочано.

   
 
 автор: SilentChild   (23.04.2008 в 11:17)   письмо автору
 
   для: Valick   (23.04.2008 в 11:07)
 

Мое желание заключается в следующем:


1-я Часть кода сценария выполняет добавление в базу данных каких-либо значений или данных;
2-я Часть кода сценария должна отображать информацию о успешном или не успешном добавлении данных.

Все это мне надо для того, чтобы когда пользователь видя сообщение: "Данные успешно добавлены!" не мог этиже данные снова добавить кнопкой F5 или кнопкой "Обнавить" в браузере.

С помощью JavaScript я не могу вникнуть, мне кажется сложным. Вот php с этой ситуацией может проще справится для моего понимания, поэтому я и хочу так сделать! Плюс ко всему на одной странице (в одном сценарии), чтоб не бегать по разным страницам.

   
 
 автор: ONYX   (23.04.2008 в 11:30)   письмо автору
 
   для: SilentChild   (23.04.2008 в 11:17)
 

<?php 
//add_news.php 
$a = isset($_POST['var']) ? : -1
header('location: add_news.php?my=' $a); //на этом он зациклится до бесконечности
//код по открытию базы и т.д. 
//затем добавляем в базу данные: 
$ins mysql_query("INSERT INTO news VALUES('" $newsdt "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')"$link_id); 
?>


>2-я Часть кода сценария должна отображать информацию о успешном или не успешном добавлении данных.
Тут желательно использовать кук, ибо фокус с отпревленной переменной может не прокатить, пользователь просто вернется на прошлую страницу и отправит данные еще раз

   
 
 автор: Valick   (23.04.2008 в 11:33)   письмо автору
 
   для: ONYX   (23.04.2008 в 11:30)
 

кук
а ещё лучше переменную сессии. имхо.

   
 
 автор: SilentChild   (23.04.2008 в 11:47)   письмо автору
 
   для: Valick   (23.04.2008 в 11:33)
 

Да, цикл действительно бесконечный, просто еще не дописал ссылку:

Вот так вот с сессиями:
<?php
//add_news.php
?>
<a href="add_news.php?parametr=true">Добавить данные</a>
<?
//допустим я нажал на ссылке и выполняется следующий сценарий:
if ($_GET['parametr'])
{
    
$a = isset($_POST['var']) ? : -1;
    
header('location: add_news.php?my=' $a);
    
//код по открытию базы и т.д.
    //затем добавляем в базу данные:
    
$ins mysql_query("INSERT INTO news VALUES('" $newsdt "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')"$link_id);
    
session_start();
    
$_SESSION['ins'] = $ins;
}    

//после того как данные добавятся страница переходит на саму себя и проверяет по переменной (my)  был ли переход
if ($_GET['my'])
{
    
session_start();
    
$ins $_SESSION['ins'];
    if (!
$ins)
    {
        echo 
"Данные не добавлены!";
    }    
}
?>


Вот такой код будет верен?

   
 
 автор: SilentChild   (23.04.2008 в 12:28)   письмо автору
 
   для: SilentChild   (23.04.2008 в 11:47)
 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/httpd/www/experement/add_news.php:11) in /home/httpd/www/experement/add_news.php on line 405

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/httpd/www/experement/add_news.php:11) in /home/httpd/www/experement/add_news.php on line 405


Вот оно чё Михалыч, Вот Оно как =(
Нихт арбайтен!

   
 
 автор: Valick   (23.04.2008 в 12:48)   письмо автору
 
   для: SilentChild   (23.04.2008 в 12:28)
 

Перенесите
    session_start();

В начало каждого скрипта, и всё буит "бамбербия киргудук"))

   
 
 автор: SilentChild   (23.04.2008 в 13:00)   письмо автору
 
   для: Valick   (23.04.2008 в 12:48)
 

Ошибок не выдает, а переменную не могу получить через
echo $ins;
не выводиться ничего!
Нет, вру все работает! я просто знак $ переменной забыл
if (!ins)



=))))

   
 
 автор: mihdan   (23.04.2008 в 13:06)   письмо автору
 
   для: SilentChild   (23.04.2008 в 13:00)
 

<?
session_start
();
// ваш код
?>

   
 
 автор: SilentChild   (23.04.2008 в 13:15)   письмо автору
 
   для: mihdan   (23.04.2008 в 13:06)
 

А если я напишу вот так
session_start();
    $ins = $_SESSION['ins'];
    //код по открытию базы и т.д.
    //затем добавляем в базу данные:
    $ins = mysql_query("INSERT INTO news VALUES('" . $newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);


То есть переменную определяю после того как в сессию засунул ее. Будет работать?

   
 
 автор: Valick   (23.04.2008 в 13:21)   письмо автору
 
   для: SilentChild   (23.04.2008 в 13:15)
 

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


if (isset($_SESSION['ins'])) $ins = $_SESSION['ins'];
или
if (!empty($_SESSION['ins'])) $ins = $_SESSION['ins'];


в зависимости от кода если переменной несуществует присваиваете ей значение по умолчанию, либо посылаете туда где эту переменную засовываете в сессию (посылать вы уже научились)) )

   
 
 автор: SilentChild   (23.04.2008 в 13:50)   письмо автору
 
   для: Valick   (23.04.2008 в 13:21)
 

Я изменил имя сервера в запросе соединения с базой данных, тоесть зделал его не правильным, следовательно переменная $ins не должна добавить данные, а когда я передаю ее в сессии и получаю в следующей части кода:

session_start();
    if (isset($_SESSION['ins']))
    {
        $ins = $_SESSION['ins'];
        echo $ins;     
    }


то почемуто у меня $ins выводиться равным 1-му (ведь ноль должно быть - фальшь)?

Если переменная содержит команду добавления данных в базу, то при успешной работе она будет содержать true = 1
либо false = 0

Когда я передаю переменную то получаю ее всегда со значением один, не важно добавила ли она данные или нет!
Че за фигня?

   
 
 автор: Valick   (23.04.2008 в 14:23)   письмо автору
 
   для: SilentChild   (23.04.2008 в 13:50)
 

содержать true = 1
либо false = 0
немного не так как вам хотелось бы.

при isset($_SESSION['ins']) оба эти значения будут удовлетворять условию, потому что они эти переменные существуют и имеют значение либо 1 либо 0.
далее надо проверять на $_SESSION['ins']==1 либо $_SESSION['ins']==0

если хотите чтоб выражение isset($_SESSION['ins']) давало фальш, то просто уничтожаете переменную unset($_SESSION['ins']);

   
 
 автор: SilentChild   (23.04.2008 в 14:49)   письмо автору
 
   для: Valick   (23.04.2008 в 14:23)
 

В том то и дело когда я получаю переменную

$ins = $_SESSION[ ' ins ' ]

и переменная $ins всегда равна 1 даже если данные не добавились в базу!

<?php
session_start
(); 
$ins $_SESSION' ins ' ]
echo 
$ins;
//всегда выдает 1
?>   

   
 
 автор: Valick   (23.04.2008 в 15:06)   письмо автору
 
   для: SilentChild   (23.04.2008 в 14:49)
 

а после добавления в базу у вас идёт строка в коде:

$_SESSION[ ' ins ' ] = $ins


ага уже вижу что идёт...

а попробуйте не имя сервера изменить, а запрос неправильный подать...

   
 
 автор: SilentChild   (23.04.2008 в 15:17)   письмо автору
 
   для: Valick   (23.04.2008 в 15:06)
 

Ты ГЕННННННИЙ VALICK!

   
 
 автор: Valick   (23.04.2008 в 15:26)   письмо автору
 
   для: SilentChild   (23.04.2008 в 15:17)
 

И ещё может при неправильном запроси или соединении ели ещё чего выполнение скрипта оборваться и очередь до сохранения переменной в сессию не дойти, поэтому она и помнит старое значение.

   
 
 автор: SilentChild   (23.04.2008 в 15:30)   письмо автору
 
   для: Valick   (23.04.2008 в 15:26)
 

Проследил такую вещь:
когда у переменной изменяешь ченибуть как здесь:
 $ins = mysql_query("INSERT INTO news VALUES('" . $$newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);


То $ins считается успешно добавленными данными, а когда вот так:
 $ins = mysql_query("INSERT INTO news(ddsf) VALUES('" . $newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);


Тогда $ins считается не успешно добавленными данными!
Почему так, разве допускается в имени переменной два доллара - $$ins ?


Можно ведь стереть значение переменной после того как она будет не нужна?
Или не стирать значение, а просто сессию закрыть, чтобы в ней анулировалось всё?
Можно ли это сделать?

   
 
 автор: Valick   (23.04.2008 в 15:43)   письмо автору
 
   для: SilentChild   (23.04.2008 в 15:30)
 

рекомендуется перед уничтожением сесии уничтожить все переменные.

   
 
 автор: SilentChild   (23.04.2008 в 16:23)   письмо автору
 
   для: Valick   (23.04.2008 в 15:43)
 

А если сессию не закрыть, то она через множество страниц тоже будет доступна? Или закроется после очередного выполненого сценария в котором она не будет использована?

   
 
 автор: Valick   (23.04.2008 в 17:04)   письмо автору
 
   для: SilentChild   (23.04.2008 в 16:23)
 

будет доступна, пока не закроете браузер, либо пока не не пройдёт минут 15...20 скок она там живёт непомню... неуверен но от браузера может зависить... у меня допустим сессия не закрывалась на одной вкладке, пока я на другой вкладке лазил вообще непонятно где пол часа,
поэтому Логаут должен присутствовать в обязательном порядке (признак хорошего тона)

   
Rambler's Top100
вверх

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