7

我有一个用于编辑用户名和电子邮件的表格。因此,当它更新名称和电子邮件时,它需要用户名来标识它应该更新哪一行。

所以我想知道是否有任何元素与表单一起传递但没有显示值或在输入标签中可编辑。

所以我从一个脚本中获取用户名。编辑用户脚本使用指定的用户名从数据库中获取名称和电子邮件。然后它将新名称和带有用户名的电子邮件传递给另一个更新它的脚本。

4

8 回答 8

7

我相信你正在寻找

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

hidden- 只能在您的 HTML 文档的源代码中看到
name- 在提交时它将位于 $_REQUEST/$_POST/$_GET($_POST 或 $_GET 取决于您提交表单的方式)变量中
value- 您想要的用户名此表格与

PRO TIP相关:有办法告诉谁在尝试更新用户,这样您就不会让未经授权的人更新您的用户信息。有人很容易更改表单中的用户名并尝试更新其他人。

于 2011-04-23T14:27:18.190 回答
4

您可以使用隐藏的输入类型

<input type="hidden" name = "username" value="<?php echo $username ?>">
于 2011-04-23T14:27:31.227 回答
4

使用:

 <input type="hidden" />

HIDDEN是s 的元素的TYPE属性值。它表示在文档中不可见且用户不与之交互的表单域。它可用于传输有关客户端或服务器的状态信息。隐藏字段通常存储一个默认值(例如通过 php),或者通过 JavaScript 更改它们的值。INPUTFORM

更多在这里

于 2011-04-23T14:27:47.643 回答
3

使用隐藏的输入标签:

<input type='hidden' name='username' value='theusername' />
于 2011-04-23T14:28:24.517 回答
3

您可以使用隐藏的表单域:

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

这不会在浏览器中的表单上呈现,并且可能会被用户忽略和忽视。

但是,请注意这可编辑的。 不要将此作为安全措施。提交表单时,请确保提交表单的用户(使用您现有的任何身份验证和授权机制)有权在将其持久化到数据库之前进行此更改。 可以编辑任何提交的表单字段。

于 2011-04-23T14:29:49.483 回答
3

正如所有其他人所说,您需要一个隐藏的输入。虽然它是可编辑的,但永远不要相信它,因为你永远不会相信来自外部的任何其他数据。

但我想补充一点,最好不要使用用户名来标识行,而是将一个 ID 列作为主键添加到您的数据库中(可能会自动递增),然后在您的表单中使用它。

就像是

<input type="hidden" name="userid" value="<?=$userid?>" />
于 2011-04-23T14:31:57.983 回答
3

Arun,您可以使用 GET 将变量从一个页面传递到另一个页面。简单地构造 URLedituser.php?username=arun等等。这是将变量或数据(当然除了 cookie 之外)传递到不使用表单标签的其他页面的唯一可能方式。
第二种方法是使用 JavaScript 创建一个隐藏的表单字段并使用用户名更新它。
第三个是简单地添加隐藏的输入标签。但是这个和后者都需要表单标签。

请注意,过滤用户输入,是 JS、GET 或隐藏字段。

于 2011-04-23T14:34:59.607 回答
2

如果您想安全使用它,请使用它:

<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"); ?>

下面是 ENCODE/DECODE 的 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;
}

?>
于 2011-04-23T20:28:02.667 回答