Как передать данные из формы без поля формы? (РНР)
У меня есть форма для редактирования имени пользователя и электронной почте. Поэтому, когда он обновляет имя и электронную почту, ему нужно имя пользователя, чтобы определить, какую строку он должен обновить.
поэтому я хотел знать, есть ли какой-либо элемент, который передается с формой, но не показывает значение или редактируется в теге ввода.
поэтому я получаю имя пользователя из одного скрипта. Редактирование скрипта пользователь получает имя и адрес электронной почты из базы данных с указанным именем пользователя. Затем он передает это новое имя и письмо с именем пользователя на другой скрипт, который обновляет его.
8 ответов
Я считаю, что вы ищете
<input type='hidden' name='username' value='theusername' />
hidden
- можно увидеть только в источнике вашего HTML-документаname
- где он будет в переменной $_REQUEST/$_POST/$_GET ($_POST или $_GET в зависимости от того, как вы отправляете свою форму) в submitvalue
- имя пользователя, к которому должна относиться эта форма
PRO TIP: есть способ сказать, кто пытается обновить пользователей, чтобы у вас не было несанкционированных людей, обновляющих вашего пользователя информация. Было бы очень легко для кого-то изменить имя пользователя в форме и попытаться обновить кого-то другого.
вы можете использовать тип ввода hidden
<input type="hidden" name = "username" value="<?php echo $username ?>">
использование:
<input type="hidden" />
HIDDEN
это TYPE
значение атрибута INPUT
элемент FORM
s. Он указывает на поле формы, которое не отображается в документе и с которым пользователь не взаимодействует. Он может использоваться для передачи информации о состоянии клиента или сервера. Скрытые поля часто хранят значение по умолчанию (e.г. через php), или их значение изменяется с помощью JavaScript.
Как и все остальные, вам нужен скрытый вход. Однако он будет редактироваться, никогда не доверяйте ему, как вы никогда не доверяете другим данным, поступающим извне.
но я хотел бы добавить, что было бы лучше не использовать имя пользователя для идентификации строки, добавить столбец 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;
}
?>