PHP — раскрывающийся список для отображения содержимого .txt

StackOverflow https://stackoverflow.com/questions/1825112

Вопрос

У меня есть форма с раскрывающимся списком названий песен.Я хочу иметь возможность щелкнуть одно из названий песен, и текст будет загружен на ту же страницу.Тексты песен содержатся в файлах .txt в папке «Lyrics».

Пример:

Выпадающий список содержит:Song1 Song2 Song3 и т. Д.

Когда пользователь нажимает на песню, на той же странице отображается содержимое соответствующего файла .txt.Есть идеи?

Это было полезно?

Решение

<?php
    $song = intval( $_GET[ 'song_id' ] );
    $songs = array( 0 => NULL, 1 => 'Song1', 2 => 'Song2', 3 => 'Song3' );
    echo file_get_contents( $songs[ $song ] . '.txt' );
?>

Удачи!

Другие советы

Было бы проще использовать JQuery:

<a href="somefile.txt" class="link">Song 1</a>
<pre id="lyrics">
</pre>

<script>
$(function(){
   $('.link').click(function(){
     $.get(this.href,null,function(lyrics){
         $('#lyrics').html(lyrics);
         return false;
     });
   });
});
</script>

Если у вас есть список песен и вы используете простое соглашение об именах, используйте его в качестве белого списка, чтобы проверить, разрешено ли значение GET, прежде чем вы даже подумаете об использовании.

file_get_contents

    $song = $_GET['song'] ;
    $file = '/Lyrics/' . $song . '.txt' ; 
    $songs = array( 'help', 'she-loves-you', 'yellow-submarine' );

   // as a double check see if the file exists too

   if( in_array( $song, $songs ) && file_exists( $file ) ) {
       echo file_get_contents( $file );
    }

Если вы сообразительны, вы также можете повторно использовать тот же массив $songs для создания раскрывающегося списка.

<значение опции=жёлтая подводная лодка > Желтая подводная лодка</option>

А затем, если вы сохраните это в базе данных, вы можете решить, что «слизняк» «желтая подводная лодка» станет идеальным секретным ключом, но не заставляйте меня начинать с этого...

Это быстрое решение, но очень небезопасное, используйте его только в качестве примера, как можно сделать, но не следует:

<?

// код вашей страницы здесь // Это тело, где вы хотите поместить тексты песен

file_get_contents($_GET['songName'].".txt")

// еще..

?>

в меню:

<a href="songs.php?songName=song1">song1</a>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top