как правильно написать переадресацию

d4a1

Новичок
как правильно написать переадресацию

Всем привет. Столкнулся с небольшой мелочью, подскажите пожалуйста как правильно переадресовать: имеется страница php с генератором паролей. надо чтоб скрипт генератора паролей сработал 1 раз и сразу переадресация на страницу ввода пароля (page2.html), и чтобы сгенерированный пароль высветился в этой форме
Код:
 <form method="POST">
  <table class="submit_form">
  <tr>
      <td>
        код
      </td>
      <td>
        <input type="text" name='key'>
      </td>
      <tr>
        <td colspan="2"><input type="submit" value="перейти"></td>    
        <?php if (isset($error)): ?>
        <div class="error">
           <?=$error?>
        </div>
        <?php endif;?>
     </tr>
  </tr>
</table>
Как правильно написать эту переадресацию. Спасибо
 

tz-lom

Продвинутый новичок
передавай управление с формы сразу на page2 а в обработчике page2 делай всё что надо
 

d4a1

Новичок
Нет так не пойдет. Надо как я в первом посте написал. Вот один человек подсказал:
______________________________________________
<input type="submit" name="ok" value="перейти">
______________________________________________


______________________________________________
if($_POST['ok'])
{
header('location: page2.html');
exit();
}
______________________________________________

2 код понятно вставить после обработчика, а первый куда, он же html?
 

d4a1

Новичок
"тот человек" оффлайн. сильно не пинайте, php не просто даётся, подскажите чего и как прикрутить.
 

kabachok

Новичок
Автор оригинала: d4a1
"тот человек" оффлайн. сильно не пинайте, php не просто даётся, подскажите чего и как прикрутить.
сделай как сказали во втором посте
 

d4a1

Новичок
kabachok почему как в 2 посте ? ?Я же говорю - мне это неподходит.
 

Вурдалак

Продвинутый новичок
Я не понимаю почему бы не генерировать пароль на этой же странице.
 

lart

Guest
можно javascript-ом переадресовать:
<form action="page1.html" onsubmit="return testForm()">
...
</form>
<script>
function testForm(){
//здесь переадресовываем
if (....){
window.location.href='page2.html';
return false;
}
//если нужно то отправляем данные формы по указанному action
return true;
}
</script>
 

d4a1

Новичок
Спасибо друг lart . Но я полагаю javaScript не очень доверительно. Хотя .... разницы то не ... вообще тебе большое спасибо.

-~{}~ 01.08.10 19:17:

-----по религиозным убеждениям?----
Объясню ситуацию: page 1 - страница где необходимо ввести пароль доступа. Page 2 - страница успешной покупки ( при успешной оплате пользователь попадает на эту страницу). Page 2 - сразу генерирует пароль, записывает в б.д. -, если его ввестити в форме на page1 - всё о.к... Вот я и хочу , чтоб как сработал генератор- сразу переадресация на page1 и чтоб этот сгенерированный пароль попал( высветился) в Этой форме

____________________________________________________
<form method="POST">
<table class="submit_form">
<tr>
<td>
код
</td>
<td>
<input type="text" name='key'>
</td>
<tr>
<td colspan="2"><input type="submit" value="перейти"></td>
<?php if (isset($error)): ?>
<div class="error">
<?=$error?>
</div>
<?php endif;?>
</tr>
</tr>
</table>
</form>
_____________________________________________________


А вообще будет круто чтоб в браузере потом назад было не вернуться ( тем самым генерируя пароли)
 

lart

Guest
Насколько я понял это работа с платежными системами, при такой работе скрипт который генерирует пароль пользователю вообще не должен быть доступен, только если запрос пришел с платежной системы.
Обычно такие системы работают так
page1 - страница на которой человек нажимает кнопку "купить" и его перебрасывает на страницу оплаты выбранной платежной системы(ПС), в которую передается номер заказа.
pay - скрипт который не виден пользователю к нему имеет доступ только ПС, после того как пользователь оплатил, ПС посылает запрос на эту страницу с указанием номера заказа и успешно ли прошел платеж. Если успешно записываем в бузе что по такому то заказу деньги получены и дальше отправляем пользователя на страницу page2 где можно получить заказ (при этом, во время генерации page2 нужно проверить оплачен ли заказ)

P.S. если нужно сделать переадресацию средствами php нужно использовать header('Location: url'); если средствами javascript то window.location.href='url';
 

d4a1

Новичок
Помогите друзья ещё чуть. Посмотрите чего не так
Вот код страницы генерации пароля:
Код:
<?php
include "DB_connect.php";
 function generate_password($number)

  {

    $arr = array('a','b','c','d','e','f',

                 'g','h','i','j','k','l',

                 'm','n','o','p','r','s',

                 't','u','v','x','y','z',

                 'A','B','C','D','E','F',

                 'G','H','I','J','K','L',

                 'M','N','O','P','R','S',

                 'T','U','V','X','Y','Z',

                 '1','2','3','4','5','6',

                 '7','8','9','0');

    // Генерируем пароль

    $pass = "";

    for($i = 0; $i < $number; $i++)

    {

      // Вычисляем случайный индекс массива

      $index = rand(0, count($arr) - 1);

      $pass .= $arr[$index];

    }

    return $pass;

  }
$pas= generate_password(5);
  $query= "INSERT INTO a1a_system_permalink (link, time_gen, sec) values
  ('$pas',".time().",'page_1')";
$result= mysql_query ($query) or die ("asas");
  echo $pas;
  mysql_close($connection);


if($pas['ok'])
{
     header('location: a1ascript/index.php/script_secret_page/user_form/1');
    exit();
}

?>
Так всё работает и переадресуется на нужную страницу. Но немогу понять как сделать : Cсылку делаешь в виде: page2.php?key=ЗНАЧЕНИЕ.( ссылка получается нерабочая)

И надо чтоб этот пароль высветился в этой форме:
Код:
<div>            
    <script src="<?=GUIPATH?>js/jquery-1.3.1.min.js"></script>              
  <?php 
    $num = unserialize($script['allow_nums']);     
    $num = $num[rand(0,count($num)-1)];
    if (!$num) $num = 1121;  
    $prefix = unserialize($script['prefixes']);
    $prefix = $prefix[rand(0,count($prefix)-1)];  
  ?>    
  <form method="POST">
  <table class="submit_form">
  <tr>     
      <td>
        <input type="text" name='key'>
      </td>
      <tr>
        <td colspan="2"><input type="submit" value="перейти"></td>    
        <?php if (isset($error)): ?>
        <div class="error">
           <?=$error?>
        </div>
        <?php endif;?>
     </tr>
  </tr>
</table>
  </form> 
</div>
Буду очень благодарен за разъяснение. Спасибо.
 

lart

Guest
Этот код не может работать, так как ты с функции generate_password() получаешь строку с паролем а потом проверяешь эту строку как массив
if($pas['ok'])
{...

Дальше, передавать открытый пароль через GET не хорошо, находятся люди которые любят стоять за спиной и смотреть чего ты делаешь. В ссылке должен передаваться не пароль а номер ссылки, на второй странице с базы берется пароль и прячется в скрытый слой с кнопкой "показать пароль" (Что бы пользователь мог отогнать сильно любопытных)
 

Духовность™

Продвинутый новичок
я всегда удивлялся, как вот такие вот олухи устраиваются на работу и им езё за ЭТО деньги платят.
 

d4a1

Новичок
Автор оригинала: triumvirat
я всегда удивлялся, как вот такие вот олухи устраиваются на работу и им езё за ЭТО деньги платят.
Вы что подумали, что я работаю PHP программистом? Это же я для себя! Если Вы может лет 10 php изучаете - то канечно для Вас это не задачка (наверное? как знать)

-~{}~ 02.08.10 17:45:

lart Я сголасен с тобой что передавать открытый пароль через GET не хорошо. Но в моём случае пароль может сработать 1 раз, далее он удаляется из базы данных.
Поэтому он попадёт тому кому надо (я так думаю).

Этот код не может работать, так как ты с функции generate_password() получаешь строку с паролем а потом проверяешь эту строку как массив
if($pas['ok'])
{...

? а как сделать то? Неможите кодик написать и носом ткнуть куда вставить.
 

lart

Guest
Вместо кода
$pas= generate_password(5);
$query= "INSERT INTO a1a_system_permalink (link, time_gen, sec) values
('$pas',".time().",'page_1')";
$result= mysql_query ($query) or die ("asas");
echo $pas;
mysql_close($connection);


if($pas['ok'])
{
header('location: a1ascript/index.php/script_secret_page/user_form/1');
exit();
}
Код
Код:
$pas= generate_password(5);
  $query= "INSERT INTO a1a_system_permalink (link, time_gen, sec) values
  ('$pas',".time().",'page_1')";
mysql_query ($query) or die ("asas");
$count_rows=mysql_affected_rows();
  echo $pas;
  mysql_close($connection);


if($count_rows==1)
{
     header('location: a1ascript/index.php/script_secret_page/user_form/1');
    exit();
}
 

d4a1

Новичок
Вау. Lart - спасибо тебе огромное.
Всё переадресуется отлично. Если не сложно, подскажи как сделать ,чтоб пароль высветлся в нужной форме

-~{}~ 02.08.10 18:33:

Если пишу на странице ввода пароля :
________________________________________________
<?php
if(isset($_GET['pas']))
{echo $pas;}
?>
__________________________________________________
Почему он не высвечивается в поле ввода пароля?
 

d4a1

Новичок
>$_GET['pas']
>echo $pas;

Я конечно извиняюсь, но после такой команды - страница вообще не стала открываться.

-~{}~ 02.08.10 18:55:

<?php

>$_GET['pas']
>echo $pas;

?>

Этот код хоть куда ставь- страница с ним не открывается. Факт. Ото что была шутка?
 
Сверху