【问题标题】:PHP echo printing language constructPHP 回显打印语言构造
【发布时间】:2014-11-12 17:09:04
【问题描述】:

在作业中,我在运行带有页面处理的 php 脚本时遇到了问题。当通过另一个 php 页面提交时,它会输出实际的 php 代码,但它自己可以正常工作。

我有一个 html 登录页面,它通过提交按钮而不是表单提交 [要求] 提交。这将提交给 login.php。 另外,我有 testBalance.php 来检查我的服务器上的一个文件 balance.txt,该文件只有一个数量(1000)。 testBalance.php 调用 getBalance.php 中的函数来返回此处的金额。

问题是,当我自己运行 testBalance.php 时,它工作得很好。显示“帐户余额:1000.00”,但是当我尝试(在 login.php 中)testBalance.php 设置为重定向 url 时,页面实际上显示来自我的 testBalance 的代码。 php页面:“账户余额:”); printf ( "%01.2f", $returnValue );回声 (" "); ?> " 我知道这很复杂,这是对 web prog 的 php 部分的介绍。班级。我猜这与传递给页面的值对有关。有人可以帮忙吗?

LOGIN.HTML 片段


 <input type="button" name="sub_but" id="bal"   value="check balance"
 onclick="location.href = 'login.php' + '?' + 'name='+ document.forms[0].username.value + 
 '&amp;redirectURL=' + 'bal';" />

LOGIN.PHP


<?php
    $NAME=$_GET["name"];
    $PAGE=$_GET["redirectURL"];
    $DESTINATION="";

if ($NAME == ''){   /* HANDLES NAME ERRORS */
    echo "PLEASE RETURN AND ENTER A NAME.";
    }
elseif (ctype_alpha(str_replace(' ', '', $NAME)) === false) {
    echo "$NAME is not a valid name. Name must contain letters and spaces only";
    }
else{
    if($PAGE=='with'){
        $DESTINATION = "withdraw.html";
    }
    elseif($PAGE=='bal'){
        //$DESTINATION = "balance.html";
        $DESTINATION = "testBalance.php";
    }
    elseif($PAGE=='depos'){
        $DESTINATION = "deposit.html";
    }
    elseif($PAGE=='weath'){
        $DESTINATION = "weather.html";
    }
    elseif($PAGE=='xchang'){
        $DESTINATION = "currency.html";
    }
                                                       /*echo("$DESTINATION\r\n");*/
    
    header("Content-Length: " .
    strlen(file_get_contents($DESTINATION)));
    header("Cache-Control: no-cache");
    readfile($DESTINATION);
    }
?>

testBalance.php 正文片段


        <?php
            include 'getBalance.php';
            $returnValue = readBalance();
            echo "<p>Account balance: ";
            printf( "%01.2f", $returnValue );
            echo "</p>";
        ?>
        

getBalance.php


 <?php
    function readBalance(){
        $file = "balance.txt";
        $fp = fopen($file, "r");
        if (!$fp){
            echo "<p>Could not open the data file.</p>";
            $balance = 0;
        }
        else{
            $balance = fgets($fp);
            fclose ($fp);      
        }
        return $balance;
    }
?>

【问题讨论】:

  • 代码 sn-ps 被过度使用、误用和滥用。到底是谁提出了这个想法?
  • 我承认这有点矫枉过正,但我​​认为如果没有大量的 cmets 会问我为什么不包含相关代码。
  • 代码没问题,就是(代码)sn-p按钮。
  • 啊,是的,我想知道这一点。有没有办法禁用它?
  • TBH,我不能说。我必须用一个测试问题对其进行测试,以查看 Stack 是否默认添加了它。

标签: php html output echo submit-button


【解决方案1】:

readfile() 不会执行它读取的任何内容。它实际上只是在文件的字节中啜饮并将它们吐出给客户端。基本上就是这样

echo file_get_contents(...);

如果您希望执行其他文件,则需要 include()require() 它们。或者你可以试试eval(),但你真的不想走那条路。 eval() 既邪恶又危险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    相关资源
    最近更新 更多