Как передать данные из формы без поля формы? (РНР)

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

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

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

8 ответов


Я считаю, что вы ищете

 <input type='hidden' name='username' value='theusername' />

hidden - можно увидеть только в источнике вашего HTML-документа
name - где он будет в переменной $_REQUEST/$_POST/$_GET ($_POST или $_GET в зависимости от того, как вы отправляете свою форму) в submit
value - имя пользователя, к которому должна относиться эта форма

PRO TIP: есть способ сказать, кто пытается обновить пользователей, чтобы у вас не было несанкционированных людей, обновляющих вашего пользователя информация. Было бы очень легко для кого-то изменить имя пользователя в форме и попытаться обновить кого-то другого.


вы можете использовать тип ввода hidden

<input type="hidden" name = "username" value="<?php echo $username ?>">

использование:

 <input type="hidden" />

HIDDEN это TYPE значение атрибута INPUT элемент FORMs. Он указывает на поле формы, которое не отображается в документе и с которым пользователь не взаимодействует. Он может использоваться для передачи информации о состоянии клиента или сервера. Скрытые поля часто хранят значение по умолчанию (e.г. через php), или их значение изменяется с помощью JavaScript.

здесь


использовать скрытый тег input:

<input type='hidden' name='username' value='theusername' />

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

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

что-то вроде

<input type="hidden" name="userid" value="<?=$userid?>" />

Arun, вы можете использовать GET для передачи переменных с одной страницы на другую страницу. Просто создайте URL-адреса как edituser.php?username=arun и так далее. Это единственный возможный способ передать переменные или данные, конечно, кроме cookies, на другие страницы без использования тегов формы.
Второй способ-использовать JavaScript для создания скрытого поля формы и обновления его с именем пользователя.
Третий - просто добавить скрытые теги ввода. Но для этого и последнего потребуются теги form.

слово предостережения, фильтр пользовательские входы, будь то JS, GET или скрытые поля.


вы можете использовать скрытое поле формы:

<input type="hidden" name="originalUsername" value="something" />

Это не будет отображаться на форме в браузере и, вероятно, будет проигнорировано и незамечено пользователем.

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


используйте это, если вы хотите использовать его безопасно:

<input type='hidden' name='username' value='<?php echo encode("Please Encode Me!","This is a key"); ?>' />

что приведет к:

<input type='hidden' name='username' value='p3e4e4241674d2r4m4i5o464a4f2p3k5c2' />

и в скрипте модификации вам придется использовать:

<?php $username = decode("p3e4e4241674d2r4m4i5o464a4f2p3k5c2","This is a key"); ?>

ниже у вас есть функции PHP для кодирования / декодирования:

<?php

function encode($string,$key) {
    $key = sha1($key);
    $strLen = strlen($string);
    $keyLen = strlen($key);
    for ($i = 0; $i < $strLen; $i++) {
        $ordStr = ord(substr($string,$i,1));
        if ($j == $keyLen) { $j = 0; }
        $ordKey = ord(substr($key,$j,1));
        $j++;
        $hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36));
    }
    return $hash;
}

function decode($string,$key) {
    $key = sha1($key);
    $strLen = strlen($string);
    $keyLen = strlen($key);
    for ($i = 0; $i < $strLen; $i+=2) {
        $ordStr = hexdec(base_convert(strrev(substr($string,$i,2)),36,16));
        if ($j == $keyLen) { $j = 0; }
        $ordKey = ord(substr($key,$j,1));
        $j++;
        $hash .= chr($ordStr - $ordKey);
    }
    return $hash;
}

?>