[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: session
RuslanMRP
подскажите сессии могут передавать суперглобальные переменные,если делать переход на следующую страницу по ссылке?



Спустя 4 минуты, 44 секунды (10.02.2010 - 14:07) RuslanMRP написал(а):
сессия работае только до тех пор пока я заполняю на последующих страницах какие-либо формы, но как только я дохажу до страницы с сылкой и перехожу по ней на следующую, сессия перестает существовать. В чем проблема?

Спустя 45 минут, 59 секунд (10.02.2010 - 14:53) Nikitian написал(а):
session_start() делается в начале страницы? А куки включены?

Спустя 5 минут, 4 секунды (10.02.2010 - 14:58) RuslanMRP написал(а):
Nikitian


session_start() делаю на каждой последующей странице.
Не понял про куки?

Спустя 22 минуты, 7 секунд (10.02.2010 - 15:20) RuslanMRP написал(а):
Помогите, почему до в файле2 сиссия работает, а после (в файлах 3,4) не работает?

файл1:
<?
session_start();
$_SESSION['name'] = $name;
$_SESSION['fam'] = $fam;
$_SESSION['otch'] = $otch;
$_SESSION['telrab'] = $telrab;
$_SESSION['telmob'] = $telmob;
?>
<HTML>
<HEAD>
</HEAD>
<BODY>
<Table border=0 width="35%" align="center">
<Form action="файл2.php" method="POST">
<tr>
<td align="right"><font color="red">*</font>Имя :</td><td><INPUT TYPE="text" name="name"></td>
</tr>
<tr>
<td align="right"><font color="red">*</font>Фамилия :</td><td><INPUT TYPE="text" name="fam"></td>
</tr>
<tr>
<td align="right"><font color="red">*</font>Отчество :</td><td><INPUT TYPE="text" name="otch"></td>
</tr>
<tr>
<td align="right"><font color="red">*</font>Рабочий телефон :</td><td><INPUT TYPE="text" name="telrab"></td>
</tr>
<tr>
<td align="right"><font color="red">*</font>Мобильный телефон :</td><td><INPUT TYPE="text" name="telmob"></td>
</tr>
<tr>
<td align="right"><INPUT TYPE="submit" value="отправить" name="reg"></td><td><INPUT TYPE="reset" value="Сброс"></td>
</tr>
</Table>
</Form>
</BODY>
</HTML>

файл2:

<?
session_start();
echo $_POST['name'];


if ($_SERVER['REQUEST_METHOD'] == "POST") {
echo "<table border=0 align='center'><tr><td>";

if (empty($_POST["name"])) $errors[] = 'Заполните поле имя';
if (empty($_POST["fam"])) $errors[] = 'Заполните поле фамилия';
if (empty($_POST["otch"])) $errors[] = 'Заполните поле отчество';
if (empty($_POST["telrab"])) $errors[] = 'Заполните поле рабочий телефон';
if (empty($_POST["telmob"])) $errors[] = 'Заполните поле мобильный телефон';

if (!empty($_POST["name"]))
if (!preg_match('~^[a-zа-я]{1,}$~i',$_POST["name"]))
$errors[] = "Имя должно содержать только буквы";

if (!empty($_POST["fam"]))
if (!preg_match('~^[a-zа-я]{1,}$~i',$_POST["fam"]))
$errors[] = "Фамилия должна содержать только буквы";

if (!empty($_POST["otch"]))
if (!preg_match('~^[a-zа-я]{1,}$~i',$_POST["otch"]))
$errors[] = "Отчество должно содержать только буквы";

if (!empty($_POST["telrab"]))
if (!preg_match('~^[0-9_]{1,}$~i',$_POST["telrab"]))
$errors[] = "Рабочий телефон должен содержать только цифры";

if (!empty($_POST["telmob"]))
if (!preg_match('~^[0-9_]{1,}$~i',$_POST["telmob"]))
$errors[] = "Мабильный телефон должен содержать только цифры";


if (count($errors)) {
while(list($k,$v) = each($errors)) {
echo '<font color="red">'.$v.'</font><br>';

}
echo "</td></tr></table>";
} else {
$_POST['name'] = $name;
$_POST['fam'] = $fam;
$_POST['otch'] = $otch;
$_POST['telrab'] = $telrab;
$_POST['telmob'] = $telmob;
?>
<table border=1 align='center'>
<tr>
<td>Выбор категории товаров:</td>
</tr>
<tr>
<td><a href="файл3.php">CD</td>
</tr>
</table>
<?
}

}
?>

файл3:

<?
session_start();
$_SESSION['name'] = $name;
$_SESSION['fam'] = $fam;
$_SESSION['otch'] = $otch;
$_SESSION['telrab'] = $telrab;
$_SESSION['telmob'] = $telmob;
include "options.php";
if(!mysql_connect($host,$USER,$PASSWD))
{
echo "<h1>Ошибка сервера MySql.</h1>";
exit;
}
echo $_POST['name'];
mysql_select_db($DB);
echo "<table border=1 width=100%>";
$r=mysql_query("select * from tovar where cat = 'CD'");
echo "<form method=POST action=файл4.php>";

for ($i=0; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td>$f[cat]</td><td>$f[opis]</td><td>$f[price]</td><td><input type=checkbox name=Arr[] value=".$f['id']."></td></tr>";
}
echo "<tr><td align=center colspan=4><input type=submit name=buy value=заказать></td></tr>";
echo "</table>";
echo "</form>";
echo $_POST['name'];
?>

файл4:

<?
session_start();
$_POST['name'] = $name;
$_POST['fam'] = $fam;
$_POST['otch'] = $otch;
$_POST['telrab'] = $telrab;
$_POST['telmob'] = $telmob;

include "options.php";

if(!mysql_connect($SERVER,$USER,$PASSWD))
{
echo "Ошибка";
}

if(isset($_POST["buy"]))
{
$message = "HELLO, ".date("d.m.Y")."go zakaz\n";
$q="select * from tovar where";
foreach($_POST['Arr'] as $k=>$v) $q=$q." (id=$v) or";
$q=substr($q,0,strlen($q)-3);

mysql_select_db($DB);
$r=mysql_query($q);
$message = $message."ZAKAZ:\n";
echo "Ваш заказ:";
echo $_POST['name'];
echo "<table border=1 width=100%>";
echo "<tr><td bgcolor=#336699>наименование</td><td bgcolor#336699>Цена</td></tr>";
$sum=0;
for($i; $i<mysql_num_rows($r); $i++)
{

echo "<tr>";

$f=mysql_fetch_array($r);
$message = $message."[$i] --> \t $f[opis] \t\t $f[price]\n";

echo "<td>$f[opis]</td><td>$f[price]</td>";

$sum+=$f['price'];
echo "</tr>";
}
echo "</table>";
echo "Общая сумма заказа: $sum\n";
$message = $message."\n Obschaya summ: $sum\n";
mail("dsfsdd", "fgdf", $message, "FROM:$name");
exit;
}
?>

Спустя 2 минуты, 48 секунд (10.02.2010 - 15:23) Ice написал(а):
неужели самому удобно такое читать?

Спустя 6 минут, 23 секунды (10.02.2010 - 15:30) RuslanMRP написал(а):
Ice

Извини.По другому не умею писать. Только начинаю разбираться с PHP.

Может подскажешь, в чем ошибка?

Спустя 31 минута, 13 секунд (10.02.2010 - 16:01) Ice написал(а):
а с чего ты взял, что у тебя сессия работает на второй странице? Потому что имя выводится? Это не сессия это пост smile.gif Сессия не работает у тебя, начиная со второй страницы, потому что ты не улавливаешь ее механизм. Перепиши код.

Спустя 10 минут, 46 секунд (10.02.2010 - 16:12) RuslanMRP написал(а):
Ice

Спасибо, понял. Не понимаю почему он не хочет улавливать. Надо переконструировать весь код?!

Спустя 3 минуты, 7 секунд (10.02.2010 - 16:15) Ice написал(а):
ага) не надо пост надо сессию.

Спустя 9 минут, 22 секунды (10.02.2010 - 16:24) RuslanMRP написал(а):
Ice

В :\tmp как только я открываю файл1 создаеться файл, сессия в нем --> name|N;fam|N;otch|N;telrab|N;telmob|N;

Вопрос: один файл сессии должен быть на все файлы, которые мне нужны?
Не могу разобраться, не работает.


Спустя 7 минут, 18 секунд (10.02.2010 - 16:31) Ice написал(а):
Файл будет. session_start-то есть. Но сессия пустая, не видишь?
print_r($_SESSION);

Спустя 7 минут (10.02.2010 - 16:38) Gradus написал(а):
в 3 файле
$_SESSION['name'] = $name;
$_SESSION['fam'] = $fam;

Скорее всего переменные $name и т.д. не определены поэтому сессиям присваиваеться пустота

Спустя 1 минута, 10 секунд (10.02.2010 - 16:40) Ice написал(а):
даже не поэтому smile.gif еще раньше. Я специально не говорю=)

Спустя 18 секунд (10.02.2010 - 16:40) RuslanMRP написал(а):
Ice

Не понимаю, что не так, если я указал, почему она не хочет добавлять имя

session_start();
$_SESSION['name'] = $name;
?>
<Table border=0 width="35%" align="center">
<Form action="файл2.php" method="POST">
<tr>
<td align="right"><font color="red">*</font>Имя :</td><td><INPUT TYPE="text" name="name"></td>
</tr>
<tr>
<td align="right"><INPUT TYPE="submit" value="отправить" name="reg"></td><td><INPUT TYPE="reset" value="Сброс"></td>
</tr>
</Table>
</Form>

Спустя 16 минут, 56 секунд (10.02.2010 - 16:57) Gradus написал(а):
прочитав первых 2 файла полностью, понял что тут ещё до сессий долеко smile.gif

Спустя 2 минуты, 54 секунды (10.02.2010 - 17:00) RuslanMRP написал(а):
Спасибо за помощь

Спустя 20 минут, 34 секунды (10.02.2010 - 17:20) Mizka написал(а):
не понимаю зачем тут вообще использовать сессии...
п.с. стартовать сессию надо только один раз...

Спустя 35 секунд (10.02.2010 - 17:21) Gradus написал(а):
Ну не спешите обижаться и с первого раза написать большой код.
Почитайте свой код внимательно.
1)Вы передаёте пост переменные файлу 2 через форму из 1 файла.
2)В файле 2 вы пост переменным присваиваете необьявленные переменные
3)Переходите по ссылке в файл 3 и опять же пустые необьявленные переменные присваиваете сессиим - -- это основная ошибка
4)В 4 файл повторяеться пункт 2
Вы чувствуете логику ? я нет.,даже если эти необьявленые переменные являються пост переменными

Спустя 1 час, 51 минута, 7 секунд (10.02.2010 - 19:12) RuslanMRP написал(а):
Gradus

Разобрался, спасибо большое!!!!!!!


$_SESSION['name']=$_POST['name'];

так правильно?

Спустя 15 минут, 26 секунд (10.02.2010 - 19:27) Guest написал(а):
да прально)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.