在php函数中放置时,file_exist无法正常工作

时间:2013-09-30 08:23:07

标签: php

我搜索了几乎相似的问题,但这些都没有给我正确的答案。我在if else语句中有一个完全工作 file_exist代码。但是当我把它放在一个函数中时它不再起作用了。这是代码:

if (file_exists($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt")) {  

            $myFile = ($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt");
            $fh = fopen($myFile, 'r');
            $theData = fread($fh, filesize($myFile));
            fclose($fh);

            echo $theData;

         echo "The file exists." ;                      
    }

    else {
        echo "The file $filename does not exist";
    }

当我把它放在一个不起作用的函数中时:

function readexisting(){
    if (file_exists($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt")) {  

        $myFile = ($_SERVER['DOCUMENT_ROOT']."/Alchemy/events/folder-01/event-01.txt");
        $fh = fopen($myFile, 'r');
        $theData = fread($fh, filesize($myFile));
        fclose($fh);

        echo $theData;

         echo "The file exists." ;                      
    }

    else {
    echo "The file $filename does not exist";
    }

}

另外,我想在图像点击事件中调用该函数。这是代码,如果它会有所帮助:

<div class="Thumb popup_element shadow clearfix" id="u2413"><!-- group -->
    <img class="grpelem" id="u2471" alt="This Week's Events" src="images/blank.gif" onclick="readexisting()"/><!-- state-based BG images -->
   </div>

我希望你能帮助我。非常感谢你!

6 个答案:

答案 0 :(得分:2)

使用onclick=分配JavaScript事件处理程序,而不是PHP函数。

我不知道您的代码应该做什么,但也许您可以在将某些内容发布到您的文件时执行该功能。

答案 1 :(得分:2)

您尝试以与JavaScript函数相同的方式调用PHP函数。这只是行不通。

onclick="readexisting()"

你只能调用这样的JavaScript函数。

答案 2 :(得分:0)

您无法从HTML / JS调用PHP函数。当HTML / JS开始在客户端工作时,PHP已经完成了它在服务器端的工作。

关于file_exists - 它不会改变它在函数内外的行为。所以问题应该在fil路径中。可能是因为你有     /Project/events/folder-01/event-01.txt 在第一种情况下     /Alchemy/events/folder-01/event-01.txt 在第二个? (Alchemy!=项目)

答案 3 :(得分:0)

onclick=用于调用javascript函数或运行javascript代码,你无法使用onclick=""调用php函数,但是正如你所说的那样你得到的是没有函数的输出只是因为当你单击图像它只是呈现具有第一个代码的同一页面,当您将此代码移动到一个函数时,并且由于函数不由它自己运行,您需要调用它们,这就是为什么在第二种情况下您没有得到预期的输出。 / p>

如果你想使用javascript调用php函数使用AJAX

使用javascript调用PHP函数

创建一个测试文件夹ex。 ajax(yourhost / ajax /)

view.php (yourhost / ajax / view.php)

<html>
    <head>
        <title>Simple AJAX Example</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
        <div class="Thumb popup_element shadow clearfix" id="u2413"><!-- group -->
          <img class="grpelem" id="u2471" alt="This Week's Events" src="images/blank.gif" onclick="readexisting()"/><!-- state-based BG images -->
        </div>

        <script>
            function readexisting() {
                 jQuery.ajax({
                    type: "POST",
                    url: 'controller.php',
                    data: {action: 'readexisting', arguments: 'your data'}, 
                    success:function(data) {
                                         data = data.split("~:~");
                                         alert(data[0]); // message
                                         alert(data[1]); // content
                    }
                });
            }
        </script>
    </body>
</html>

<强> Controller.php这样

<?php
    include_once("model.php");

    $obj = new Model();

    switch($_POST["action"]){ 
        case 'readexisting': 
            $obj->readexisting();
        break;      
    } 
?>

<强> model.php

<?php
class Model {

   public function readexisting() {
       if (file_exists($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt")) {  
            $myFile = ($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt");
            $fh = fopen($myFile, 'r');
            $theData = fread($fh, filesize($myFile));
            fclose($fh);

            echo "The file exists. ~:~".$theData ;                      
       } else {
            echo "The file $filename does not exist";
       }
   }

}
?>

答案 4 :(得分:0)

在不重新加载/加载页面的情况下,无法使用onclick(直接)调用PHP函数。

但您可以使用<a>标记替代解决方案并调用该PHP函数。

答案 5 :(得分:0)

你无法调用PHP函数来自像Javascript函数这样的HTML标记。 你必须将你的功能改为javascript函数,以便像这样调用它

onclick="readexisting()"