2 回答
TA贡献1805条经验 获得超9个赞
文件2.php
<?php
session_start();
$frnd = $_SESSION['friendname'];
?>
<html>
<body>
<p><?php echo $_SESSION['username']; ?></p>
<h4>Enter some details for your friend <?php echo $frnd;?></h4>
<form>
</form>
</body>
</html>
TA贡献1793条经验 获得超6个赞
上述代码中的 sql 对 sql 注入是开放的——你应该考虑使用prepared statementsas,一旦掌握,将使生活更简单,你的代码更安全。
以下内容未经测试,但基本上按如下方式工作:
POST 请求数据被过滤 - 尽管在使用准备好的语句时这不是绝对必要的,但 IMO 总是一个好主意。
sqlprepared用于执行,?sql 中的占位符绑定到变量。
<?php
session_start();
include 'config.php';
$user=filter_input( INPUT_POST, 'username', FILTER_SANITIZE_STRING );
$name=filter_input( INPUT_POST, 'friendname', FILTER_SANITIZE_STRING );
$years=filter_input( INPUT_POST, 'years', FILTER_SANITIZE_NUMBER_INT );
$nick=filter_input( INPUT_POST, 'nickname', FILTER_SANITIZE_STRING );
$place=filter_input( INPUT_POST, 'place', FILTER_SANITIZE_STRING );
$sql='insert into `data` (`username`,`friendname`,`years`,`nickname`,`place`) values (?,?,?,?,?)';
$stmt=$con->prepare( $sql );
if( !$stmt )exit('Failed to prepare SQL query');
$stmt->bind_param('ssiss',$user,$name,$years,$nick,$place);
$res=$stmt->execute();
if( $res && $con->affected_rows==1 ){
$_SESSION['friendname']=$name;
$_SESSION['username']=$user;
exit( header('Location: ../form2.php') );
} else {
exit('Error');
}
?>
然后你可以像这样修改你的 HTML 以将会话变量分配给一个变量 - 虽然再次不是绝对必要的
<?php
session_start();
$friend = $_SESSION['friendname'];
?>
<html>
<body>
<form>
<p><?php echo $_SESSION['username']; ?></p>
<h4>Enter some details for your friend <?php echo $friend;?></h4>
</form>
</body>
</html>
- 2 回答
- 0 关注
- 191 浏览
添加回答
举报