开发者社区> 问答> 正文

php教程里这一段我没理解到(我好像是想多了),这个怎么理解啊??报错

一个index.html,我在index.php文件include(“index.html”),这样写的

index.html里有个input,现在主要是input这里无法理解

index.php:

<?php

 

if(empty($_POST)){

include(“index.html”);

}else{

    $catname['cat']=$_POST['cat'];

....后面代码省略

}

既然开始判断post为空,加载index.html,

else就是不为空,不为空没说加载index.html

没有加载index.html,就没有input,就没有$catname['cat']=$_POST['cat'];

但例子却是可以运行的,没报错。怎么理解啊?

?>

展开
收起
爱吃鱼的程序员 2020-06-07 16:43:53 565 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>当你post的时候,index.html已经在网页上显示出来了</p>
    
                    
    
                            可以这样理解啊?我自己认为是if为空,就加载,否则else就不加载
                        
    
                        get显示表单,
    

    post获取数据,插入数据库。 两者都有输入输出,这里只不过get的时候注重输出,post注重输入。 你post的时候如果输入数据符合要求,那么写入数据库,提示用户保存成功,然后跳转页面,基本没有输出。当用户输入数据不符合要求,就要include给他重填。

                            input表单在index.html里,if如果post空加载带有input的index.html,不为空就没说加载index.html,input就不能传数据了
                        
    
                        <p>if 这段是为了展示input 表单;</p>
    

    else是为了处理表单提交;

                        <p>你是不了解前后端交互逻辑,input是在index.html里渲染好了,然后post到后端,$_POST是从http的请求头里提取的,而不是从浏览器渲染的input里直接获取。</p>
    

    所以你最好复习一下,浏览器(前端)和服务器(后端)之间的交互逻辑吧。

                                回复 <a class="referer" target="_blank">@超爱代码语言</a>  : 在你展示的代码里,$catname['cat']=$_POST['cat'];和 include与否何来因果关系?
                        
    
                            不是那个意思,是这样的if($a>5){
    

    echo ,9;}else{ echo 10; } 如果$a=8,结果肯定是9,不会9和10都输出

                        <p>当你第一次运行index.php 是 $_POST是没有值得 所以渲染index.html文件 </p>
    

    这时浏览器拥有input框和from  

    当你提交表单时from的action应该是提交到index.php文件 

    这是你第二次运行index.php 这时$_POST有值 运行else

                        <p>你不会打印$catname吗? 不用纠结那么多,报错也有多种,即使不存在$_POST['cat'],也就是报warning,程序一样可以运行啊。</p>
    
    2020-06-07 16:44:12
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载