2

参照されたファイルのファイルパスを取得するサンプルを見つけるのに苦労してネットをつまずきました。そのうちのいくつかは、セキュリティ上の理由から、この機能が機能しなくなったことを読みました。アイデアはありますか?サンプルがひどく必要です。私はすでに何度も試しました。

これは現在私が持っているものです:

<html>

<body>


<form method="post" action="file.php" enctype="multipart/form-data">

<input type="radio" name="type" value="moodle" required="required" /> Moodle<br />
<input type="radio" name="type" value="bb" required="required" /> BlackBoard<br />
<input type="file" name="file" id="file" /><br /><br />

<input type="submit" value="Submit" name="submit" />

</form> 

</body>

</html>

file.php

<?php


$filetype = $_POST["type"];




echo $filetype;

echo "Upload: " . $_FILES['file']['name'] . "<br />";
echo "Type: " . $_FILES['file']['tmp_name'];

if ($_FILES['file']['error'] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES['file']['name'] . "<br />";
  echo "Type: " . $_FILES['file']['type'] . "<br />";
  echo "Size: " . ($_FILES['file']['size'] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES['file']['tmp_name'];
  }


function moodlezip($zipfile){

    echo "<h1>MOODLE</h1>"."<br />";

    $moodle = new Moodle();
    $zip = zip_open($zipfile);
    $ziparc = new ZipArchive;


    if ($zip)
    {
        while ($zip_entry = zip_read($zip))
        {

            $file = zip_entry_name($zip_entry);

            //echo "Name: " . $file . "<br />";


            if (strpos($file,'course.xml') !== false) {

                if ($ziparc->open($zipfile) === TRUE) {

                    $coursexml =  new SimpleXMLElement($ziparc->getFromName($file));

                    $moodle->getCourse($coursexml);

                    $ziparc->close();


                } else {
                    echo 'failed';
                }


            }

            else if (strpos($file,'forum.xml') !== false) {

                if ($ziparc->open($zipfile) === TRUE) {

                    $topicxml =  new SimpleXMLElement($ziparc->getFromName($file));

                    $moodle->getTopic($topicxml);

                    $ziparc->close();


                } else {
                    echo 'failed';
                }


            }



            else if (strpos($file,'lesson.xml') !== false) {

                if ($ziparc->open($zipfile) === TRUE) {

                    $lessonxml =  new SimpleXMLElement($ziparc->getFromName($file));

                    $moodle->getLessons($lessonxml);

                    $ziparc->close();


                } else {
                    echo 'failed';
                }


            }



            else if (strpos($file,'quiz.xml') !== false) {

                if ($ziparc->open($zipfile) === TRUE) {

                    $quizxml =  new SimpleXMLElement($ziparc->getFromName($file));

                    $moodle->getQuizzes($quizxml);

                    $ziparc->close();


                } else {
                    echo 'failed';
                }


            }


            else if (strpos($file,'questions.xml') !== false) {

                if ($ziparc->open($zipfile) === TRUE) {

                    $questionsxml =  new SimpleXMLElement($ziparc->getFromName($file));

                    $moodle->getQuestions($questionsxml);

                    $ziparc->close();


                } else {
                    echo 'failed';
                }


            }


        }

        zip_close($zip);
    }

}

require_once 'classes/backup.php';

$connect = mysql_connect("localhost","root","");


if (!$connect)
{
    die('Could not connect: ' . mysql_error());
}

mysql_close($connect);


//form upload loop folders input submit, find, bb, scorm
//class admin
?>
4

2 に答える 2

1

pathinfo()を使用するhttp://php.net/manual/en/function.pathinfo.php

于 2012-08-14T15:24:39.907 に答える
0

セキュリティ上の理由から、ファイルのフルパスを取得することはできません。W3CおよびRFC仕様には、完全なファイルパスが利用可能である必要があるとは記載されていません。ファイル名のみを取得できます(document.getElementById("filefield_id").valueたとえば、名前を返します)。

その理由は、ファイルパスを取得/変更する機能があれば、非表示のフィールドを介してユーザーからファイルを盗むこともできるためです。結論:それは不可能です。あなたが正確に何をしようとしているのかを教えていただければ、私たちはもっと助けになるかもしれません。

于 2012-08-14T15:45:57.457 に答える