cari
Rumahpembangunan bahagian belakangtutorial php关于XXX.php?id=,XXX.php中的变量id可用的条件是什么?解决办法

关于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 造成修改失败。还会给出'更新完成'的虚假信息

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Penalaan prestasi PHP untuk laman web trafik yang tinggiPenalaan prestasi PHP untuk laman web trafik yang tinggiMay 14, 2025 am 12:13 AM

Thesecrettokeepingaphp-poweredwebsiterunningsmoothlyunderheavyloadinVolvesserVeSkeystrategies: 1) pelaksanaanPodeCachingWithopCachetoreduceScriptexecutionTime, 2) UsedataBasequerycachingWnithSoRessendataBaBAboad, 3)

Suntikan Ketergantungan dalam PHP: Contoh Kod untuk PemulaSuntikan Ketergantungan dalam PHP: Contoh Kod untuk PemulaMay 14, 2025 am 12:08 AM

Anda harus mengambil berat tentang kebergantungan (DI) kerana ia menjadikan kod anda lebih jelas dan lebih mudah untuk dikekalkan. 1) Di menjadikannya lebih modular dengan decoupling kelas, 2) meningkatkan kemudahan ujian dan fleksibiliti kod, 3) menggunakan bekas DI untuk menguruskan kebergantungan kompleks, tetapi memberi perhatian kepada kesan prestasi dan kebergantungan bulat, 4) Amalan terbaik adalah bergantung kepada antara muka abstrak untuk mencapai gandingan longgar.

Prestasi PHP: Adakah mungkin untuk mengoptimumkan aplikasi?Prestasi PHP: Adakah mungkin untuk mengoptimumkan aplikasi?May 14, 2025 am 12:04 AM

Ya, OptimizingaphpapplicationIspossibleandessential.1) pelaksanaanCachingUsingAputeDeducedeDataBaseload.2) OptimisedataTabaseseseshithindexing, eficientqueries, danConnectionPooling.3) EnhancecodeWithBuilt-Infungsi, EveringGlobalVariables

Pengoptimuman Prestasi PHP: Panduan TerbaikPengoptimuman Prestasi PHP: Panduan TerbaikMay 14, 2025 am 12:02 AM

ThekeystrategiestoSignificLantantlyboostphpapplicationperformanceare: 1) useopcodecachinglikLikeopcachetoreduceExecutionTime, 2) OptimizedataBaseInteractionsWithPreparedStatementsandProperindexing, 3) ConfigureWebserverserverLikenginxWithPmforbetterShipter.

Kontena Suntikan Ketergantungan PHP: Permulaan yang cepatKontena Suntikan Ketergantungan PHP: Permulaan yang cepatMay 13, 2025 am 12:11 AM

AphpdependencyInjectionContainerisatoLthatMatagesClassDependencies, EnhancingCodeModularity, Testability, andMaintainability.itactsascentralHubforcreatingandinjectingdependencies, sheReducingTightCouplingandeaseaseaseSunittesting.

Suntikan ketergantungan berbanding pencari perkhidmatan di phpSuntikan ketergantungan berbanding pencari perkhidmatan di phpMay 13, 2025 am 12:10 AM

Pilih DependencyInjection (DI) Untuk aplikasi besar, servicelocator sesuai untuk projek kecil atau prototaip. 1) DI meningkatkan kesesuaian dan modulariti kod melalui suntikan pembina. 2) ServiceLocator memperoleh perkhidmatan melalui pendaftaran pusat, yang mudah tetapi boleh menyebabkan peningkatan gandingan kod.

Strategi Pengoptimuman Prestasi PHP.Strategi Pengoptimuman Prestasi PHP.May 13, 2025 am 12:06 AM

Phpapplicationscanbeoptimizedforspeedandeficiencyby: 1) enablingopcacheinphp.ini, 2) menggunakan preparedSwithpdofordatabasequeries, 3) menggantikanloopswitharray_filterandarray_mapfordataprocessing, 4) configuringnginywinginywinyvinyvinginy

Pengesahan E -mel PHP: Memastikan e -mel dihantar dengan betulPengesahan E -mel PHP: Memastikan e -mel dihantar dengan betulMay 13, 2025 am 12:06 AM

PhpeMailvalidationInvolvestHreesteps: 1) formatValidationingRegularExpressionStocheckTheemailFormat; 2) dnsvalidationtoensurethedomainhasavalidmxrecord;

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma