Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > значение в поле hidden


Автор: Sniper 22.10.2007, 09:18
smile

Код

<input name="log" type="text" value="user">
<input name="hidden" type="hidden" id="hidden" value=<?php echo $_POST["log"]; ?> />


почему не передается значение?
если сделать:
Код

print $_POST['hidden'];


Если в value вписать просто строку, то всё в порядке.

Автор: MoLeX 22.10.2007, 09:33
в место
Цитата(Sniper @  22.10.2007,  09:18 Найти цитируемый пост)
value=<?php echo $_POST["log"]; ?>

попробуй вот это
Код

value=<?=$_POST["log"]?>

Автор: Sniper 22.10.2007, 09:44
показывает на строчку с input и пишет 
Код

Undefined index: log in

почему log неопределён?  smile 
исправил 

ээ всёравно не работает.

Автор: Guedda 22.10.2007, 09:53
Давай подумаем логически, как это должно произойти:
После посыла формы на сервер, он еще не знает, что ему передали $_POST['log'], потому что он только пеередается. Так откуда же взяться этому $_POST['log']-у, если на сервере его еще нет?
Тебе надо просто обработать запрос сначала на стороне клиента, и присвоить хиддену то значение, которое в log. Поэтому тебе здесь поможет JS.

Автор: Sniper 22.10.2007, 10:17
Guedda,  знал бы я ещё js ;-)

Код

<input id="log" name="log" type="text" value="user"> 

Код

<script type="text/javascript">
    function copy_var() {
        login=document.getElementById("log").value;
        return login;
    }
</script>

думаю что вот так. А как дальше?

Автор: flashaa 22.10.2007, 10:34
Сделать проверку на пустоту и все. Если переменная пуста, будет вставлено значение по умолчанию.
Код

$hidden = (empty($_POST['log'])) ? $hidden = ''по умолчанию" : $_POST['log'];
...
<input name="hidden" type="hidden" id="hidden" value=<?= $hidden ?> />

Автор: Sniper 22.10.2007, 10:41
всегда вставляется "по умолчанию"

Автор: dsCode 22.10.2007, 10:58
flashaa, <input value="<?php print isset($_POST['log']) ? $_POST['log'] : 'default'  ?>">

Автор: flashaa 22.10.2007, 11:17
Цитата(dsCode @  22.10.2007,  10:58 Найти цитируемый пост)
flashaa, <input value="<?php print isset($_POST['log']) ? $_POST['log'] : 'default'  ?>">

Cпасибо.
Sniper, у меня есть подозрения, что твоя форма методом GET работает, приведи полный текст странички.

Автор: Sniper 22.10.2007, 12:08
flashaa, 
вот я создал два файла
page1.php
Код

<form method="post" action="page2.php">
<input id="log" name="log" type="text" value="user">
<input type="submit" name="pos" value="Next" >
<input name="hidden" type="hidden" id="hidden" value="<?php print isset($_POST['log']) ? $_POST['log'] : 'default'  ?>" >
</form>

а вот второй 
page2.php 
Код

<?php
print $_POST['hidden'];
?>

показывается default

Автор: flashaa 22.10.2007, 12:23
Значит так:
1) Открываешь страницу первый раз. $_POST['hidden'] не существует, выводится default;
2) Жмешь submit, на cкрипт page2.php передаются следующие данные
log  => user
pos =>Next
hidden => default

Соответственно, print($_POST['hidden']) выведет 'default'.
Скрипт работает как и ожидается, а какой вывод ты хочешь получить?

Автор: Sniper 22.10.2007, 12:40
flashaa, пользователь вводит свой логин.
и этот логин при клике им на кнопку next передается на другую страницу(при помощи hidden кнопки).

Автор: flashaa 22.10.2007, 12:50
page1.php:
Код

<form method="post" action="page2.php">
<input id="log" name="log" type="text" value="user">
<input type="submit" name="pos" value="Next" >
<input name="hidden" type="hidden" id="hidden" value="<?php print isset($_POST['log']) ? $_POST['log'] : 'default'  ?>" >
</form>


page2.php
Код

<form method="post" action="page3.php">
<input type="submit" name="pos" value="Next" >
<input name="hidden" type="hidden" id="hidden" value="<?php print isset($_POST['log']) ? $_POST['log'] : 'default'  ?>" >
</form>


На второй странице в поле hidden будет значение log, которые пользователь ввел на первой странице.

Автор: Sniper 30.10.2007, 10:06
Применив JavaScript сделал вот это:

Код

<form method="post" action="page1.php" name="logpas"> 
<input id="loginname" name="log" type="text">
<input name="hidden" type="hidden" id="hidden" value="">
<input type="submit" name="pos" onClick="userlogin();" value="Next">
</form>

Код

<script type="text/javascript">
    function userlogin(){
    var loginuser=document.getElementById("loginname").value;
    var val = document.logpas.hidden.value;
    val=loginuser;
    }
</script>

непонятно теперь, почему конструкция
echo $_POST['hidden']; на странице page1.php не работает?

Автор: capitan 30.10.2007, 14:19
Sniper, 
Во первых, не используй в переменных зарезервированные слова. А то будешь полдня сидеть и искать почему у тебя код работает неправильно. Переименуй поле 
Код

<input name="hidden" type="hidden" id="hidden" value="">

например на 
Код

<input name="login_hidden" type="hidden" id="login_hidden" value="">


А во вторый, зачем так усложнять жизнь? Чем тебя не устраивает отправлять данные на эту же страницу?
И проверять нажатие.
Код

if (isset($_REQUEST['pos'])) {
    // тут всё это дело и обрабатываем
}


Автор: Sniper 30.10.2007, 14:37
второй день уже  smile а ничего не работает.

мне соответственно нужно записать в сессии делаю так
Код

if (isset($_REQUEST['pos'])) {
    $_SESSION['item1'] = $Data[1];
    $_SESSION['item2'] = $Data[0];
    $_SESSION['username'] = $_POST['login_hidden'];
} 

соответсвенно хочу использовать на второй странице.
Код

<?php
    session_start();    
    echo "Item #: " . $_SESSION['item1'] . ", Item #: " . $_SESSION['item2']. ", User ".$_SESSION['username'];
?>

а оно не работает! smile 

Автор: capitan 30.10.2007, 14:57
И не будет работать. При первом запуске скрипта поле "login_hidden" пустое. При обработке формы ты в сессию его и пишешь:
Код

    $_SESSION['username'] = $_POST['login_hidden'];


пиши:
Код

    $_SESSION['username'] = $_POST['log'];

И не забывай session_start();   прописывать на всех страницах, где используются сессии.

P.S. А зачем тебе вообще поле "login_hidden" ? Какую функцию оно выполняет?

Автор: Sniper 30.10.2007, 19:07
 smile 
page1.php
Код

<?php
session_start();
$item =array("127.0.0.1","NewItem");
print_r($item);
?>
<form method="post" action="page2.php" name="logpas"> 
<input id="loginname" name="log" type="text">
<input name="login_hidden" type="hidden" id="login_hidden" value="">
<input type="submit" name="pos" onClick="userlogin();" value="Next">
</form>
    <script type="text/javascript">
        function userlogin(){
        var loginuser=document.getElementById("loginname").value;
        var val = document.logpas.login_hidden.value;
        val=loginuser;
        alert(val);
        }
    </script>
<?php        
    if (isset($_REQUEST['pos'])) {
        $_SESSION['item3'] = $item[0];
        $_SESSION['item4'] = $item[1];
        $_SESSION['username'] = $_POST['log'];
    }
?>


page2
Код

<?php
session_start();
echo "Item #: " . $_SESSION['item3'] . ", IP: " . $_SESSION['item4']. ", User ".$_SESSION['username'];
?>

что я не так делаю?

Автор: capitan 30.10.2007, 19:38
Код


<?php
    session_start();
    $item =array("127.0.0.1","NewItem");
    //print_r($item);
    
    if (isset($_POST['pos'])) {
        $_SESSION['item3'] = $item[0];
        $_SESSION['item4'] = $item[1];
        $_SESSION['username'] = $_POST['log'];
        Header("Location: page2.php");
    }
    
?>
    <form method="post" action="" name="logpas"> 
    <input id="loginname" name="log" type="text" value="<?=@$_SESSION['username'];?>">    
    <input type="submit" name="pos" value="Next">
    </form>


Непроверял, но должно работать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)