die()的替代,如果我们在单个php文件中有多个php脚本()?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了die()的替代,如果我们在单个php文件中有多个php脚本()?相关的知识,希望对你有一定的参考价值。

我是Web开发的新手。我有以下index.php文件:


<H1>Form validation with my sql integration </H1>

<form action="index.php" method="post"> 
    emailid = <input type="text" name="tv_name" size="30" maxlength="32"><br>
    password = <input type="password" name="tv_pass" size="30" maxlength="11"><br>
    press to create a new account : <input type="submit"  colspan="12" name="bt_register" value="Register!"><br>
    press to get all: <input type="submit"  colspan="12" name="bt_getall" value="GetAll entries"><br>

</form>


<?php 
    $req_type= $_SERVER['REQUEST_METHOD']; 
    $data_arr =[];

    if($req_type=='GET' and isset($_GET["bt_register"]) ) 
        $data_arr = $_GET;
    
    elseif ($req_type=='POST' and isset($_POST["bt_register"]) )
        $data_arr = $_POST;
    

    else 
        die("wrong format response recieved<br>"); 
        // we didn't handled the first run flaw corrdctly. 
        //thus this message will be shown even if btregister is not pressed
    

    echo strip_tags(""); # converting key-string pair to key-array pair


    # finding k-v pairs for each data
    foreach($data_arr as $i=> $value)
        echo "---- $i : $value <br>";
    

    #... insertion/deletion/updation/creation

?>


<?php 
    // had to make a new one because old one would die at login press        
    #---------------- reading our database ------------------------------------------

    $req_type= $_SERVER['REQUEST_METHOD']; # checking req type

    if($req_type=='GET' and isset($_GET["bt_getall"]) )  
        echo "Get all req recieved via get";
    
    elseif ($req_type=='POST' and isset($_POST["bt_getall"]) ) 
        echo "Get all req recieved via post";
    

    else 
        die("no get all response recieved, dying now."); 
    
    echo "<br>";

?>

表格中,我有2个按钮bt_registerbt_getall。对于每个按钮的任务,我也有2个php脚本<?php ...?>bt_register脚本具有将代码添加到mysql控制台的所有代码(出于烦恼而删除)。 bt_getall应该具有从sql服务器获取条目的所有代码。当按下bt_register时,第一个脚本成功运行,然后运行第二个脚本(这是错误的但可以理解的行为:我希望bt_register仅运行第一个脚本,但是由于当前的php文件有2个脚本,因此它同时运行它们)

但是当按下bt_getall时,第一个脚本的其他情况被命中,并显示“收到错误的格式响应”。

我猜想php的正常工作是这样的:在任何提交按钮按下时,一个php文件中的所有php脚本都会依次执行。如果任何php脚本调用die("..."),则完全执行将被暂停。

因此,如果我猜对了,应该使用什么替代die,以便如果当前脚本停止运行,则其他脚本可以成功运行?我确实希望我所有的php脚本仅保留在1个文件中,并让表单按钮运行

或者如果我的方法有错误,也请让我知道。

答案

是的,从字面上讲,除了die()以外,什么都没有。 ....一点都没有。

例如:

$req_type= $_SERVER['REQUEST_METHOD']; 
$data_arr =[];

if($req_type=='GET' and isset($_GET["bt_register"]) ) 
    $data_arr = $_GET;

elseif ($req_type=='POST' and isset($_POST["bt_register"]) )
    $data_arr = $_POST;

else
//do whatever you want here, or nothing at all.

但是,为什么会这样?您已将表单设置为POST。您为什么要尝试处理GET的可能性?

以上是关于die()的替代,如果我们在单个php文件中有多个php脚本()?的主要内容,如果未能解决你的问题,请参考以下文章

PHP die() 返回啥

如何从iphone中的png文件中检索单个图像

怎么给一个文件重命名 linux

如果单个元素中有多个类名,如何在 React 测试中获得正确的类名?

PHP:exit()、die() 和 return 有啥区别;在“自我”和包含的文件中?

PHP die() 函数