我是一名初学者,正在研究PHP中的登录脚本.这是我到目前为止的表单令牌语句:
$_SESSION["form_token"] = md5(rand(time (), true)) ;
Run Code Online (Sandbox Code Playgroud)
该声明是在用户表明他/她想要登录之后发出的.
我有限的理解是,令牌的目的是在唯一的时间点识别唯一用户并伪装表单令牌信息.
然后一切都变得模糊.以下是我的3个未解决的问题:
何时是出于安全目的"检查"表单令牌的最佳时间?
我该如何检查?
什么时候,如果有的话,我"破坏"表单令牌?(IOW,在用户退出之前,表单令牌会保持"活动"状态吗?
不久前,这个功能发布在一个问题的答案中.作为一个学习者,我有兴趣了解这个功能.但是,我不能让它按原样运作.海报没有说他已经测试了这个功能,所以它可能是一个"概念"的帖子,意在表明方向.OTOH,我可能没有正确地调用它.请帮忙,因为我花了一些时间试图理解它.
($ data数组是我刚刚用来运行该函数的数组.)
<?php
$data = array("a" => "January", "b" => "February", "c" => "March" );
render_table ( $data ) ;
echo $html ;
//===========================================
function render_table($data) {
$html = '<table>';
$tr = array();
foreach (array_keys($data[0]) as $key) {
$tr[] = '<th>' . htmlspecialchars($key) . '</th>';
}
$html .= "\n" . '<thead>' . "\n" . '<tr>' . "\n" . implode("\n", $tr) . '</tr>' . '</thead>';
$tbody = array();
foreach ($data as $row) {
$tr = array();
foreach ($row as $value) …Run Code Online (Sandbox Code Playgroud) 我们有一所拥有38所小学的学区.孩子们参加了考试.学校的平均分布很广,但我想比较每所学校的10名学生的平均分.
要求:仅使用临时表.
我这样做的工作量非常大,容易出错,如下所示.
(sch_code = eg,9043; - schabbrev = eg,"Carter"; - totpct_stu = eg,61.3)
DROP TEMPORARY TABLE IF EXISTS avg_top10 ;
CREATE TEMPORARY TABLE avg_top10
( sch_code VARCHAR(4),
schabbrev VARCHAR(75),
totpct_stu DECIMAL(5,1)
);
INSERT
INTO avg_top10
SELECT sch_code
, schabbrev
, totpct_stu
FROM test_table
WHERE sch_code IN ('5489')
ORDER
BY totpct_stu DESC
LIMIT 10;
-- I do that last query for EVERY school, so the total
-- length of the code is well in excess of 300 lines.
-- Then, …Run Code Online (Sandbox Code Playgroud) Php新手.
1.这个PHP和MySQL代码有什么问题吗?
include_once "db_login.php" ;
$sql = "DROP TEMPORARY TABLE IF EXISTS temp_sap_id_select" ;
mysql_query ( $sql ) or ( "Error " . mysql_error () ) ;
$sql = " CREATE TEMPORARY TABLE temp_sap_id_select
(
`current_page` INT NOT NULL,
`total_pages` INT NOT NULL,
`select_date` DATE NOT NULL,
`select_schcode` CHAR(6) NOT NULL,
`select_user` CHAR(30) NOT NULL,
`select_id` CHAR(9) NOT NULL
) " ;
mysql_query ( $sql ) or ( "Error " . mysql_error () ) ;
Run Code Online (Sandbox Code Playgroud)
2.不可否认,我是一个沉闷的男孩,但无论如何我会问:如果我使用MySQL GUI并打开目标数据库,它是否会知道PHP/MySQL创建的上述临时表(如果临时表是否正确创建)?
级别:PHP学习者
我遇到了一个复选框问题.我有一个包含名称和唯一ID号的数据库.
使用查询,我将选择一些学生并将其显示给表单上超简单HTML表格中的用户.每行都以复选框开头.方法是POST.到现在为止还挺好.我的表看起来像这样:
+-----------+----------+----------+
| SELECT | NAME | ID |
+-----------+----------+----------+
| [] | John | 2233 |
+-----------+----------+----------+
| [] | Susie | 5577 |
+-----------+----------+----------+
[-SUBMIT-]
Run Code Online (Sandbox Code Playgroud)
我的问题是我似乎无法使复选框与每个记录的唯一ID相关联.用户选择行并单击"提交"后,$_POST阵列将保持为空.
我的初学者书都没有提到这个具体问题.它们通过"常规"复选框例程,不涉及与数据库中的行交互.我也无法在Stackoverflow上找到解决此问题的问题.还尝试了谷歌:复选框上有很多东西,但我找不到任何帮助我解决这个问题的东西.
我找到了这个问题的具体答案,但找不到它 - 即使在WAMPSERVER网站上也是如此.我确定我忽略了它.
我有Wampserver 2.0,MySQL 5.0.51b,PHP 5.2.6和Apache 2.2.8.在较旧的安装上安装Wampserver 2.0i(MySQL 5.1.36,PHP 5.3和Apache 2.2.11)是否正确?我会丢失数据吗?
谢谢!
我正在努力学习构建登录序列.在一个部分中,我想确定用户是否将3个必填字段中的任何一个留空:
foreach ( $_POST as $key => $value )
{
if ( $key = "school_code" ||
$key = "user_name" ||
$key = "password" )
{
if ( $value == "" )
{
$a_blank[] = $key ;
}
}
}
if( @sizeof( $a_blank ) > 0 )
{
echo '<pre>';
print_r( $a_blank );
echo '</pre>';
}
Run Code Online (Sandbox Code Playgroud)
如果用户没有为school_code或user_name输入任何内容,但是输入密码然后单击"提交",则结果为:
Array
(
[0] => 1
[1] => 1
)
Run Code Online (Sandbox Code Playgroud)
为什么数组结果不是这样的(即$ key的值)?
Array
(
[0] => school_code
[1] => user_name
)
Run Code Online (Sandbox Code Playgroud)
谢谢!
[状况:学习者]
我试图实现参数化查询,但我遇到了问题.Jonathan Sampson最近暗示如何做到这一点(#2286115),但我没有正确地遵循他的建议.这是我的剧本
$cGrade = "grade" ;
include_once ( "db_login.php" ) ;
$sql = "SELECT last_name AS last_name
, first_name AS first_name
, grade AS gr
, ethnic AS eth
, sex AS sex
, student_id AS id_num
, reason AS reason
, mon_init AS since
FROM t_tims0809
WHERE tag <> '' AND
tag IS NOT NULL AND
schcode = {$schcode}
ORDER
BY ('%s') " ;
$qResult = mysql_query ( sprintf ( $sql, $cGrade ) or ( "Error: " . …Run Code Online (Sandbox Code Playgroud) 学校系统有30所学校.最低的学校代码是298,最高的是516.对于每所学校,将调用相同的流程.我到目前为止采用的方法可以在下面看到.如何缩短此代码?谢谢.
for ( $i = 298; $i <= 516; $i++ )
{
switch ( $i )
{
case 298:
$c_sch = strval ( $i ) ;
// call a function
uf_mem_requester ( $c_sch, $t_mem1, $t_mem2, $t_mem3,
$d_year, $d_datadate ) ;
case 303:
// etc....etc.....
case 309:
// etc....etc.....
default:
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个$ _POST数组,它是从显示的HTML表中选择(在这种情况下)3行,其中每行都有一个复选框.ID是每行的唯一标识符.
Array
(
[checkbox] => Array
(
[0] => 001403166
[1] => 001407509
[2] => 001407541
)
)
Run Code Online (Sandbox Code Playgroud)
我想将ID收集到变量中,以便我可以返回并从mysql中提取完整行以进行处理(例如,删除等) - 类似〜
$var1 = 001403166
$var2 = 001407509
$var3 = 001407541
Run Code Online (Sandbox Code Playgroud)
我不知道如何做到这一点(并不罕见),甚至不知道它是什么,以便我可以找到有关它的信息.谢谢你的帮助!
php ×9
mysql ×5
arrays ×2
html-table ×2
login ×2
temp-tables ×2
apache ×1
arraylist ×1
checkbox ×1
forms ×1
function ×1
limit ×1
post ×1
token ×1
wampserver ×1