【发布时间】:2011-07-31 21:42:54
【问题描述】:
我最近学习了数组系统来缩短我在 Javascript 上的代码。
var fields = ['username', 'password', 'password_confirm', 'type', 'firstname', 'lastname', 'bdate_month', 'bdate_day', 'bdate_year', 'email', 'country', 'state', 'city', 'payment_email'];
var length = fields.length;
for (var i=0; i<length; i++) {
if ($('#' + fields[i]).val() == "") {
$('#' + fields[i] + '_error').show();
$('#' + fields[i] + '_error').fadeOut(4000, function() {});
$('#' + fields[i]).focus();
return false;
}
}
这是我生成的代码,用于创建一系列条件来验证提交表单的内容。
现在我想在 PHP 中使用同样的原理来生成一系列函数,这些函数将从 MySQL 数据库中查询登录用户的数据。
我是 PHP 新手,我知道以下代码可能只是一堆废话。但也许你可以了解我在这里要完成的工作。
include("connect.php");
$fields = ('id', 'username', 'password', 'password_confirm', 'type', 'firstname', 'lastname', 'bdate_month', 'bdate_day', 'bdate_year', 'email', 'country', 'state', 'city', 'payment_email');
$username = mysql_real_escape_string($_SESSION['username']);
for ($i=0; $i<15; $i++) {
function $fields($i)() {
$username = mysql_real_escape_string($_SESSION['username']);
$sql="SELECT * FROM users WHERE username='$username'";
$resultado=mysql_query("$sql");
$row=mysql_fetch_array($resultado);
if($row!=NULL)
{
echo ($row['$fields($i)']);
} else {
echo (" No ".$fields($i)." inserted!");
}
}
}
============================================ 编辑:
我想出了一个更简单更简单的方法。
function in_user($key) {
$username = mysql_real_escape_string($_SESSION['username']);
$sql="SELECT * FROM users WHERE username='$username'";
$resultado=mysql_query("$sql");
$row=mysql_fetch_array($resultado);
if($row!=NULL){
echo ($row[$key]);
} else {
echo ("No {$key}!");
}
}
由于我只需要更改要咨询的字段,我认为带参数的函数会更容易和更简单。
<?php in_user('email');?> 会输出stored.email@database.com
【问题讨论】:
-
请注意,php 有 foreach(),您可能会发现它更简单 ==>
foreach($fields as $one_field) { ... } -
script.php?username=';drop+table+users --xkcd.com/327 -
@Byron:不错的尝试,但
mysql_query不支持多个查询。 (是的,它仍然是一个主要的安全漏洞)
标签: php arrays function auto-generate