如何从没有表单字段的表单传递数据? (PHP)

时间:2011-04-23 14:24:55

标签: php html database forms user-management

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

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

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

8 个答案:

答案 0 :(得分:6)

我相信你正在寻找

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

hidden - 只能在HTML文档的来源中看到 name - 提交时的$ _REQUEST / $ _ POST / $ _ GET($ _POST或$ _GET,具体取决于您提交表单的方式)变量 value - 您希望此表单与之相关的用户名
专业提示:有办法告诉谁正在尝试更新用户,这样您就不会有未经授权的人更新您的用户信息。有人可以很容易地更改表单中的用户名并尝试更新其他人。

答案 1 :(得分:4)

您可以使用输入类型隐藏

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

答案 2 :(得分:4)

使用:

 <input type="hidden" />

HIDDENTYPE的{​​{1}}元素的INPUT属性值。它表示一个表单字段,该字段在文档中不会显示,并且用户不会与之交互。它可用于传输有关客户端或服务器的状态信息。隐藏字段通常存储默认值(例如,通过php),或者通过JavaScript更改其值。

<强> more here

答案 3 :(得分:3)

使用隐藏的输入标记:

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

答案 4 :(得分:3)

您可以使用隐藏的表单字段:

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

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

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

答案 5 :(得分:3)

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

但是我想补充说,不使用用户名来识别行,将ID列作为主键添加到数据库(可能是自动递增)会更好,并在你的形式。

这样的东西
<input type="hidden" name="userid" value="<?=$userid?>" />

答案 6 :(得分:3)

Arun,您可以使用GET将变量从一个页面传递到另一个页面。只需将URL构建为edituser.php?username=arun,依此类推。这是将变量或数据(当然除了cookie)传递给使用表单标签的其他页面的唯一可行方法。
第二种方法是使用JavaScript创建隐藏的表单字段并使用用户名更新它 第三个是简单地添加隐藏的输入标签。但是这个和后者需要表格标签。

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

答案 7 :(得分:1)

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

<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;
}

?>