Передать переменную из PHP в HTML

У меня есть страница, 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-страницы.