PHP:$ _POST变量不存在于函数中

时间:2015-09-11 10:36:53

标签: php

我通过$ _POST提供一些信息,但是当我尝试将此信息用于任何函数时,控制台会出现关于未定义变量的错误(在此示例中,$ ms_img会带来错误,以及$ con - 在conexionbbdd.php上声明的连接查询以及函数内的任何其他变量。

编辑:既不作为参数传递,也不会出现每个参数一个错误:

  

警告:缺少checkCost()的参数1,在第96行的C:\ wamp \ www ... \ actions \ msg_newMessage.php中调用,并在C:\ wamp \ www ... \ actions \ msg_newMessage中定义。第17行的PHP

function checkCost($con,$ms_img,$id){...}

CODE:

<?php
    session_start();
    include("../conexionbbdd.php");
    include("../conexionapi.php");

    $id = $_SESSION['id'];   
    $inclass = $_SESSION['inclass'];   

if($_SESSION['estado'] == 'activo'){

    $ms_content = $_POST['ms_content'];
    $ms_img = $_POST['ms_img'];
    $ms_prefix = $_POST['ms_prefix'];
    $ms_phone = $_POST['ms_phone'];


    function checkCost(){
            $totalCost = 0;

            if ($ms_img!=""){
                    $totalCost=2;
            }   

            else{
                    $totalCost=1;
            }

            $checkCredits=mysqli_query($con,"SELECT us_credits FROM ws_users WHERE us_id=$id");

        }


        function sendMessage(){

            //WHATEVER
        }

    if($inclass==='1'){       
        checkCost();        
    }
    else{
        sendMessage();        
    }

}else{

header('location:../login.php');

}
?>

1 个答案:

答案 0 :(得分:0)

您可以在任何函数中访问超级全局变量,例如$ _POST。但是应该在包含文件中初始化的全局变量(例如$con)在函数中是不可访问的。您可以将其作为参数传递。并且使用global关键字将全局变量注入函数。从长远来看,这可能会导致非常混乱的代码。所以你可以这样做:

function checkCost($con){
    $ms_content = $_POST['ms_content'];
    $ms_img = $_POST['ms_img'];
    $ms_prefix = $_POST['ms_prefix'];
    $ms_phone = $_POST['ms_phone'];

        $totalCost = 0;

        if ($ms_img!=""){
                $totalCost=2;
        }   

        else{
                $totalCost=1;
        }

        $checkCredits=mysqli_query($con,"SELECT us_credits FROM ws_users WHERE us_id=$id");


    }

但它仍然非常程序化。我建议你开始阅读OOP