Php提交自行返回源代码

时间:2012-02-22 17:10:26

标签: php function form-submit self

我正在尝试向自己提交一个php表单但在提交页面后返回页面的源代码而不是处理过的数据。

我有一个issset来检查表单是否已经提交,然后在同一页面上有函数来处理提交的数据。

以下是代码:

    if(isset($_POST['submit'])){

        if ($_POST['name' == 'px']) {
            $pxValue = $_POST['value'];
            $value = convertToEm($pxValue); 
        }

        if ($_POST['name' == 'em']) {
            $emValue = $_POST['value'];
            $value = convertToPx($emValue); 
        }

        function convertToEm($value) {
            $base_font = 16;
            $em_value = $value / $base_font;
            return $em_value;

        }
    }

以下是表格:

<form action="" id="converterPx" method="POST">
    <h3>Convert Pixels to Ems:</h3>
    <label>PX:</label>
    <input type="text" name="value" value="" />
    <?php echo 'Result:'. $value; ?>
    <input type="hidden" name="type" value="px" />
    <input type="submit" name="submit" id="submit-px" />
</form>

尝试在同一页面上处理表单

使用浏览器检查器,我看到POST提交了值。

对此有任何帮助都很棒

6 个答案:

答案 0 :(得分:1)

如果PHP源出现在返回的页面上,则可能是因为您忘记了标记

或者因为服务器没有配置为正确执行PHP

(或文件名的扩展名错误)

答案 1 :(得分:1)

要在同一页面中执行自我操作,请在表单操作中使用此操作$ _SERVER ['REQUEST_URI']

//这是您问题的确切答案代码

<?php
if(isset($_POST['submitBtn'])){


    function convertToEm($value) {

            $base_font = 16;
            $px_value = $value/$base_font;
        return  $px_value;
        }
        function convertToPx($value) {
            $base_font = 32;
            $em_value = $value/$base_font;
            return  $em_value;
        }

       if (isset($_POST['type']) && $_POST['type']=='px') {

            $pxValue = $_POST['value'];
        $value = convertToEm($pxValue); 

        }

        if (isset($_POST['type']) && $_POST['type'] == 'em') {

            $emValue = $_POST['value'];
            $value = convertToPx($emValue); 

        }


    }

//form data

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" id="converterPx" method="POST">
    <h3>Convert Pixels to Ems:</h3>
    <label>PX:</label>
    <input type="text" name="value" />
    <?php echo 'Result:'.$value; ?>
    <input type="hidden" name="type" value="px" />
    <input type="submit" name="submitBtn" id="submit-px" />
</form>

答案 2 :(得分:1)

这是代码中的拼写错误,您使用了名称而不是类型

if ($_POST['type']== 'px') {
        $pxValue = $_POST['value'];
        $value = convertToEm($pxValue); 
    }

    if ($_POST['type'] == 'em') {
        $emValue = $_POST['value'];
        $value = convertToPx($emValue); 
    }

答案 3 :(得分:0)

$_POST['name' == 'px']应该是$_POST['name'] == 'px'](对类似的构造进行了类似的更改)。

您正在尝试将两个字符串(将为false)之间的比较结果用作数组索引。

答案 4 :(得分:0)

您是否忘记了<?php ?>代码? $_POST['name' == 'px']也应该是$_POST['name'] == 'px',缺少convertToPx函数,你的表单上没有名为param的param,并且你没有回应任何东西。

<?php if(isset($_POST['submit'])){

        if ($_POST['name']== 'px') {
            $pxValue = $_POST['value'];
            $value = convertToEm($pxValue); 
        }

        if ($_POST['name'] == 'em') {
            $emValue = $_POST['value'];
            $value = convertToPx($emValue); 
        }

        function convertToEm($value) {
            $base_font = 16;
            $em_value = $value / $base_font;
            return $em_value;
        }
        function convertToPx($value) {
            $base_font = 32;
            $em_value = $value / $base_font;
            return $em_value;
        }


    echo $value;
    }
?>

答案 5 :(得分:0)

您没有提交 self ,而是提交没有

<form action="" id="converterPx" method="POST">

编辑:正如劳伦斯指出的那样,应该避免使用我最初描述的方法。相反,请使用$_SERVER['SCRIPT_NAME'];,有关详细信息,请参阅http://www.webadminblog.com/index.php/2010/02/23/a-xss-vulnerability-in-almost-every-php-form-ive-ever-written/

原始:根据您调用表单的方式,您可以尝试:

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" id="converterPx" method="POST">

此处有更多详情:http://www.html-form-guide.com/php-form/php-form-action-self.html