-2

イメージ名を取り込んでイメージをロードし、名前とイメージをページに表示する PHP プログラムがあります。

javascrip の変数は次のように記述されます。

var latest_image_name = '<?=$post_img_name?>';

PHPコードは

<?php
        foreach($files_assoc_array_keys as $file_name){
            if($file_name==$post_img_name){
            ?>
            <label class="lbl_image_name active"><?=$file_name?></label>
            <?php
            }else{
            ?>
            <label class="lbl_image_name"><?=$file_name?></label>
            <?php
            }
        }
        ?>

HTML出力は、次のようにレンダリングされています

<div id="image_list_wrapper">
                    <label class="lbl_image_name"><?=$file_name?></label>
                    </div>

そしてご覧のとおり、PHPはタグを投稿された画像名に置き換えていないようです。

コードは開発された元のサーバーで機能しますが、別のサーバーに移行すると機能しません.ApacheとPHPがインストールされたCentos 6.4の両方の他の2つのサーバーを試しました. 元のサーバーのセットアップがどのように機能したかはわかりません。

完全なコードを以下に示します

<?php
header('Refresh: 5; URL=display.php');
print_r($_POST['post_img_name']);
$target_directory = "uploaded_images";

if(!file_exists($target_directory)){
    mkdir($target_directory);
}



if(isset($_POST['del_image'])) {
    $del_image_name = $_POST['del_img_name'];
    if(file_exists($target_directory."/".$del_image_name.".jpg")){
        unlink($target_directory."/".$del_image_name.".jpg");
    }
if(is_dir_empty($target_directory)){
        die("Last image delete. No images exist now.");
}
    $post_img_name = basename(get_latest_file_name($target_directory), '.jpg');

}else if(isset($_POST['post_img_name'])){
    $post_img_name=$_POST['post_img_name'];
    $post_img_temp_name = $_FILES['post_img_file']['tmp_name'];
}else{
    $post_img_name = basename(get_latest_file_name($target_directory), '.jpg');
}

$files_array = new DirectoryIterator($target_directory);
$total_number_of_files = iterator_count($files_array) - 2;
$files_assoc_array = array();


$already_exists = "false";
if($total_number_of_files != 0){
    foreach ($files_array as $file_info){
        $info = pathinfo( $file_info->getFilename() );
        $filename = $info['filename'];
        if ($filename==$post_img_name) {
            $already_exists = "true";
        }
    }
}

if(!isset($_POST['del_image']) && isset($_POST['post_img_name'])){
    $target_file = "$target_directory"."/".$post_img_name.".jpg";
    $source_file = $post_img_temp_name;



    if($already_exists == "true"){
        unlink($target_file);
    }
    move_uploaded_file($source_file, $target_file);
}



foreach ($files_array as $file_info){
    $info = pathinfo( $file_info->getFilename() );
    $filename = $info['filename'];
    if(!$file_info->isDot()){
        $files_assoc_array[$filename] =  $target_directory."/".$file_info->getFilename();
    }
}

$files_assoc_array_keys = array_keys($files_assoc_array);

function get_latest_file_name($target_directory){
    $files_array = new DirectoryIterator($target_directory);
    $total_number_of_files = iterator_count($files_array) - 2;
    $timestamps_array = array();

    if($total_number_of_files!=0){
        foreach($files_array as $file){
            if(!$file->isDot()){
                $timestamps_array[filemtime($target_directory."/".$file)] = $file->getFilename();
            }
        }
    }
    $max_timestamp = max(array_keys($timestamps_array));
    return $timestamps_array[$max_timestamp];

}
function is_dir_empty($dir) {
    if (!is_readable($dir))
        return NULL;
    $handle = opendir($dir);
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            return FALSE;
        }
    }
    return TRUE;
}

?><!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    <link rel="stylesheet" href="css/style.css"/>
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        var files_array_text = '<?php echo implode(", ", $files_assoc_array)?>';
        var files_array_keys_text = '<?php echo implode(", ", $files_assoc_array_keys)?>';

        var files_array = files_array_text.split(", ");
        var files_array_keys = files_array_keys_text.split(", ");

        var files_assoc_array = createAssociativeArray(files_array_keys, files_array);

        var latest_image_name = '<?=$post_img_name?>';
        display_image(latest_image_name);


        $('.lbl_image_name').click(function(){
            $('#img_loading').show();
            $('#img_display').hide();

            var image_name = $(this).text();
            $('.active').removeClass('active');
            $(this).addClass('active');

            display_image(image_name);
        });

        function createAssociativeArray(arr1, arr2) {
            var arr = {};
            for(var i = 0, ii = arr1.length; i<ii; i++) {
                arr[arr1[i]] = arr2[i];
            }
            return arr;
        }

        function display_image(image_name){
            var image_path = files_assoc_array[image_name];
            $('#img_display').attr('src', image_path);
            $('#img_display').load(image_path, function(){
                $('#img_loading').hide();
                $('#img_display').show();
            })

        }
    });
    </script>
</head>
<body>
    <div id="container">
        <div id="image_list_wrapper">
            <?php
            foreach($files_assoc_array_keys as $file_name){
                if($file_name==$post_img_name){
                    ?>
                    <label class="lbl_image_name active"><?=$file_name?></label>
                    <?php
                }else{
                    ?>
                    <label class="lbl_image_name"><?=$file_name?></label>
                    <?php
                }
            }
            ?>
        </div>
        <div class="separator"></div>
        <div id="image_display_wrapper">
            <div id="img_loading_wrapper">
                <img src="images/loading.gif" id="img_loading"/>
            </div>

            <img src="" id="img_display"/>
        </div>
        <div style="clear: both">

        </div>
    </div>
    <a href="index.php">Go Back</a>
</body>
</html>
4

1 に答える 1