У меня есть страница, play.html
:
<form method="post" action="play.php"> <input type="hidden" name="mp3name" value="/MP3/1.mp3"> <input type="submit" value="Play My MP# #1" /> </form> <form method="post" action="play.php"> <input type="hidden" name="mp3name" value="/MP3/2.mp3"> <input type="submit" value="Play My MP# #2" /> </form>
Это вызывает другую страницу, play.php
:
<?php $formurl = "play.html" ; $playerurl = "player.html" ; $mymp3 = $_GET["mp3name"]; header( "Location: $playerurl?mp3name=$mymp3" ); exit ; ?>
Затем он вызывает другую страницу, player.html
:
<audio id="player" src="$mymp3" autoplay preload="auto"> </audio> <div> <button onclick="document.getElementById('player').play()">Play</button> <button onclick="document.getElementById('player').pause()">Pause</button> <button onclick="document.getElementById('player').volume+=0.1">Volume Up</button> <button onclick="document.getElementById('player').volume-=0.1">Volume Down</button> </div>
Как передать переменную с PHP на player.html
?
Вы получаете переменную $mymp3
с $_GET
когда используете <form method='post'..
, измените ее на $mymp3 = $_POST['mp3name']
;
Затем измените расширение player.html на player.php, чтобы использовать PHP-код.
Итак, когда у вас есть файл player.php, измените это …
<audio id="player" src="$mymp3" autoplay preload="auto"> </audio>
к этому…
<audio id="player" src="<?php echo $mymp3 ?>" autoplay preload="auto"> </audio>
Вы не можете, если это всего лишь простой HTML-файл. Измените его на PHP-файл и используйте <?= $_GET['mymp3'] ?>
. В play.php
, поскольку вы передаете mp3name
через POST, вам также понадобится $_POST
вместо $_GET
.
И если вы не используете PHP 5.4, <?php echo $_GET['mymp3']; ?>
<?php echo $_GET['mymp3']; ?>
был бы рекомендованным способом сделать это (спасибо @Palladium).
Вероятно, самым простым способом (по крайней мере, с учетом информации, которую мы имеем от вопроса), было бы избавиться от перенаправления с play.html
на player.html
и испустить игрока из прежнего, а не статическую HTML-страницу. Итак, play.html
будет выглядеть примерно так:
$formurl = "play.html" ; $playerurl = "player.html"; $mymp3 = $_GET["mp3name"];
<audio id="player" src="<?php echo $mymp3; ?>" autoplay preload="auto"></audio> <div> <button onclick="document.getElementById('player').play()">Play</button> <button onclick="document.getElementById('player').pause()">Pause</button> <button onclick="document.getElementById('player').volume+=0.1">Volume Up</button> <button onclick="document.getElementById('player').volume-=0.1">Volume Down</button> </div>
Или есть особая причина, почему это должно произойти посредством перенаправления? Если это перенаправление, то тот факт, что это HTML-страница, ограничивает ваши параметры, поскольку у нее не будет обработки на стороне сервера. Вы можете передать значение в строке запроса, как вы уже пытались:
header("Location: $playerurl?mp3name=$mymp3");
Но тогда вы столкнулись с проблемой чтения его из строки запроса без обработки на стороне сервера. Однако вы можете сделать это с помощью JavaScript . Вам нужно будет прочитать значение и установить атрибут src
на audio
. Но, вероятно, было бы намного проще и надежнее делать это с серверной обработкой.
Полный html-код, форму, целую страницу можно поместить в первый PHP. Скопируйте все из второго HTML и поместите в начало оригинального файла PHP. Удалите заголовок команды redirect («Местоположение: $ playerurl? Mp3name = $ mymp3»); с вашего PHP. Вместо этого напишите с полным html-файлом с кодом
<audio id="player" src="$mymp3" autoplay preload="auto"> </audio> <div> <button onclick="document.getElementById('player').play()">Play</button> <button onclick="document.getElementById('player').pause()">Pause</button><button onclick="document.getElementById('player').volume+=0.1">Volume Up</button><button onclick="document.getElementById('player').volume-=0.1">Volume Down</button> </div>
и положите их ниже?>. Сохраните весь файл (ваш php с полным HTML внизу) все как один файл с расширением .php. Теперь ваш HTML-код имеет переменную $ mymp3, которая уже была определена в самой секции PHP, и ее значение будет доступно для всех HTML и других PHP-кодов внутри этого файла. Вы можете добавить несколько разделов php и html) в одном файле. Сохраните весь файл в одном имени с расширением .php. Для этого вам не нужен другой отдельный html-документ. В PHP вы можете смешивать и смешивать php-код и HTML-страницы.