关于XXX.php?id=,XXX.php中的变量id可用的条件是什么?
初学php,遇到很多问题,这个问题实在暂时没想明白,希望大家帮看看。
<br /><?php <br /> include("conn.php"); <br /> if(!empty($_GET['id']))<br /> {<br /> $id=$_GET['id'];<br /> $sql="select * from `user` where `id`='$id'";<br /> $query=mysql_query($sql);<br /> $result=mysql_fetch_array($query);<br /> } <br /> if(!empty($_POST['sub']))<br /> {<br /> //$id=$_GET['id'];<br /> $title=$_POST['title'];<br /> $content=$_POST['content'];<br /> $id=$_POST['hid'];<br /> $sql="update `user` set `title` = '$title', `content` = '$content' where id='$id limit 1'";<br /> mysql_query($sql);<br /> echo "<script> alert('更新完成'); location.href='index.php'</script>";<br /> }<br />?><br /><form action="edit.php" method="post"><br /><input type="hidden" name="hid" value="<?php echo $result['id'] ?>"><br><br />标题<input type="text" name="title" value="<?php echo $result['title'] ?>"><br><br />内容<textarea rows="5" cols="50" name="content"><?php echo $result['content'] ?></textarea><br><br /><input type="submit" name="sub" value="提交"><br /></form><br /><br />
刚看了php100的视频,讲解关于微型博客。其中实现博客的编辑功能,在index.php中放入一个编辑的链接,如下:
<br /><h2 id="php-nbsp-echo-nbsp-result-title-nbsp-br-a-nbsp-href-nbsp-nbsp-edit-php-id-php-nbsp-echo-nbsp-result-id-编辑-a-nbsp-br-a-nbsp-href-nbsp-nbsp-delete-php-id-php-nbsp-echo-nbsp-result-id-删除-a"><?php echo $result['title']; ?><br /> |<a href = "edit.php?id=<?php echo $result['id'];?>">编辑</a> <br /> <a href = "delete.php?id=<?php echo $result['id'];?>">删除</a>|</h2><br />
问题是,为什么当我在edit.php中的第二个if里不能直接用这个id调用(如代码中被注释的一行,如果这样,会报Undefined index id而且编辑不生效),而是要在表单里再重新插入hidden?
------解决方案--------------------
">编辑
这个应该是列表页面进入编辑页面的url,使用 是用$_GET 获取的,代码没错。
然后进入到编辑页面,修改内容后,你按submit提交。表单的method是$_POST。所以$_GET['id']当然没有数据,因为要用$_POST获取。但你加了hidden,并用$id=$_POST['hid'];获取到了。
<br /> if(!empty($_POST['sub']))<br /> {<br /> //$id=$_GET['id'];<br /> $title=$_POST['title'];<br /> $content=$_POST['content'];<br /> $id=$_POST['hid'];<br /> $sql="update `user` set `title` = '$title', `content` = '$content' where id='$id limit 1'";<br /> mysql_query($sql);<br /> echo "<script> alert('更新完成'); location.href='index.php'</script>";<br /> }<br />
代码可以这样优化:
<br />include("conn.php"); <br /><br />if(isset($_POST['sub'])){ // 判斷是否提交表單<br /> $title=$_POST['title'];<br /> $content=$_POST['content'];<br /> $id=$_POST['hid'];<br /> $sql="update `user` set `title` = '$title', `content` = '$content' where id='$id limit 1'";<br /> mysql_query($sql);<br /> echo "<script> alert('更新完成'); location.href='index.php'</script>";<br /> exit();<br />}else{ // 不是提交表單,表示是從列表頁過來<br /> $id=$_GET['id'];<br /> $sql="select * from `user` where `id`='$id'";<br /> $query=mysql_query($sql);<br /> $result=mysql_fetch_array($query);<br />}<br />?><br /><br /><form action="edit.php" method="post"><br /><input type="hidden" name="hid" value="<?php echo $result['id'] ?>"><br><br />标题<input type="text" name="title" value="<?php echo $result['title'] ?>"><br><br />内容<textarea rows="5" cols="50" name="content"><?php echo $result['content'] ?></textarea><br><br /><input type="submit" name="sub" value="提交"><br /></form><br />
------解决方案--------------------
edit.php 具有两个不同的功能,在修改微博的过程中将执行两次
第一次:edit.php?id=nnn
有 url 参数,程序走 if(!empty($_GET['id'])) 真 分支
完成查询数据
并充填表单
第二次 表单提交 edit.php
没有 url 参数,程序走 if(!empty($_POST['sub'])) 真 分支
完成数据修改后跳转至目录页
由于两个条件不会同时成立,所以 $id=$_GET['id'] 在第二个 if 中不可用
此程序有一个潜在的问题:
当直接浏览器访问 edit.php 时,因为两个条件都不成立。会在充填表单时发生错误,而暴露服务器布局
如果忽略错误检查,此时应为新微博输入。但 edit.php 并无新增微博的处理代码
而当做修改的话,又因缺少 id 造成修改失败。还会给出'更新完成'的虚假信息

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具