如何不使用Session在PHP网页间传递变量?点击链接传ID失败求助
如何不使用Session在两个PHP页面间传递变量(解决点击DIV链接传ID失败的问题)
首先看你的代码,问题主要出在参数传递格式错误、请求方法不匹配和HTML结构错误这几个地方,我一步步帮你修正:
问题分析
- 链接参数格式错误:你在
firstpage.php里的链接写的是shopping.php?<?php echo $identity?>,这根本没有定义参数名,正确的GET传参格式应该是页面名?参数名=参数值,而且这里你误用了$identity = $_POST['book_id'],循环里应该用当前行的$ResultsRow['id']才对。 - 请求方法不匹配:你用链接跳转(这是GET请求),但在
secondpage.php里却用$_POST['identity']接收参数,GET参数只能用$_GET超全局变量获取,而且参数名也不对。 - HTML结构错误:你的
<a>标签闭合顺序混乱,把<div>和<input>的嵌套关系搞反了,这会导致链接失效或者浏览器解析异常。
修正后的代码
1. firstpage.php(传参页面)
<?php // 这里的$identity如果没有其他用途可以删除,因为循环里我们直接用查询结果的id // $identity = $_POST['book_id']; while($ResultsRow=mysql_fetch_array($res)) { ?> <div class="col-md-2 offset-md-2"> <div class='thumbnail'> <!-- 修正链接,明确传递book_id参数 --> <a href="shopping.php?book_id=<?php echo $ResultsRow['id'] ?>" target="_blank"> <!-- 如果需要显示ID,input可以保留,建议设置为只读避免用户修改 --> <input type="text" name="book_id" value="<?php echo $ResultsRow['id'] ?>" readonly> </a> </div> </div> <?php } ?>
2. secondpage.php(接收参数页面)
<p> <?php // 先判断参数是否存在,避免Undefined index报错 $myvarC = isset($_GET['book_id']) ? $_GET['book_id'] : '未获取到图书ID'; echo $myvarC; ?> </p>
其他不用Session的传参方式
如果你不想用GET传参(比如参数是敏感数据),可以用POST方式提交:
POST方式示例(firstpage.php)
<?php while($ResultsRow=mysql_fetch_array($res)) { ?> <div class="col-md-2 offset-md-2"> <div class='thumbnail'> <form action="shopping.php" method="post" target="_blank"> <!-- 用隐藏域传递ID,用户看不到 --> <input type="hidden" name="book_id" value="<?php echo $ResultsRow['id'] ?>"> <!-- 可以把div做成可点击的提交按钮,或者用普通按钮 --> <button type="submit" style="border:none; background:transparent;"> <input type="text" value="<?php echo $ResultsRow['id'] ?>" readonly> </button> </form> </div> </div> <?php } ?>
POST方式接收(secondpage.php)
<p> <?php $myvarC = isset($_POST['book_id']) ? $_POST['book_id'] : '未获取到图书ID'; echo $myvarC; ?> </p>
额外提示
你的代码里用了mysql_*系列函数,这些函数已经被PHP官方废弃,建议尽快换成mysqli或者PDO,避免后续版本兼容问题。
内容的提问来源于stack exchange,提问作者Alexis MUGWANEZA
相关产品推荐
相关产品推荐

