跨页面传输变量

时间:2016-05-03 00:03:09

标签: php

我有一个表单,允许用户输入"标题","描述"等信息。

的index.php

    <form action="action.php" method="POST">
     <p>Video Title</p>   <input type="text" name="title"> <br>
     <p>Video Link</p> <input type="text" name="Link"> <br>
     <p>Description</p> <input type="text" name="desc"> <br>
     <p>Page Name</p>   <input type="text" name="pagename"> <br>
    <input type="submit" value="Submit">
 </form>

但我将表单信息发送到action.php,它复制了video.php(VideoPlayer页面)

ACTION.PHP

<?php


$title = htmlspecialchars($_POST['title']);
$link = htmlspecialchars($_POST['link']);
$desc = htmlspecialchars($_POST['desc']);
$pgname = htmlspecialchars($_POST['pagename']);


copy('video.php', $pgname . '.html');

$myFile = $pgname . '.html';

$ch = curl_init($myFile);
$output = curl_exec($ch);

?>

VIDEO.PHP

   ` <title><?php  echo $_POST["$title"]; ?></title>`
   <?php 

  echo '<source src="'.$link.'" type="video/mp4">' ?>

如何从action.php获取变量,例如$ title和$ pgname到video.php。

页面必须重复,以便我可以使用原件。

3 个答案:

答案 0 :(得分:1)

  

如何从action.php获取变量,如$ title和$ pgname   进入video.php。

将变量从一个php脚本传递到另一个$_SESSION,即:

<强> action.php的

<?php
session_start();
$_SESSION['title'] = htmlspecialchars($_POST['title']); //some title

<强> video.php

<?php
session_start();
echo $_SESSION['title'];
//some title

答案 1 :(得分:1)

您需要在curl函数中发布变量。

将您的vars转换为查询字符串:

foreach($_POST as $key=>$value) { 
    $post_string .= $key.'='.$value.'&'; 
}
rtrim($post_string, '&');

然后添加到你的卷曲设置:

curl_setopt($ch,CURLOPT_POST, count($_POST));
curl_setopt($ch,CURLOPT_POSTFIELDS, $post_string);

你的video.php副本必须是一个php文件!

copy('video.php', $pgname . '.php');

$myFile = $pgname . '.php';

有关完整示例,请参阅 https://davidwalsh.name/curl-post

答案 2 :(得分:1)

如果要将代码用于action.php范围内的变量,请按照markt answer 如果您想从action.php重定向到video.php页面,请关注Pedro Lobito答案。

请注意,您可以在action.php中使用此代码获得相同的实际代码结果:

(...)
$desc = htmlspecialchars( $_POST['desc'] );
include( 'video.php' );

但可能你不想那样。根据你的评论:

  

我想把它永久化,所以它可以存档......

您的代码或答案都不会使您的特定视频页面成为永久性的:它们只是将现有的PHP代码复制到新文件中,而不会存储有关特定视频的任何信息。

要做到这一点,你必须使用不同的方法。像这样的东西(action.php):

$title  = htmlspecialchars( $_POST['title'] );
$link   = htmlspecialchars( $_POST['link'] );
$desc   = htmlspecialchars( $_POST['desc'] );
$pgname = htmlspecialchars( $_POST['pagename'] );

$html = <<<EOT
<!DOCTYPE html>
<html>
<head>
    <title>$title</title>
</head>
<body>
    <p>$desc</p>
    <source src="$link" type="video/mp4">
</body>
</html>
EOT;

$myFile = $pgname . '.html';

if( ! file_put_contents( $myFile, $html ) )
{
    die( "Error saving $myFile" );
}
else
{
    header( 'Location: $myFile' );
    exit;
}

简而言之,您使用适当的视频数据(标题,链接,说明)设置变量(我使用Heredoc语法之上),然后将其保存在新文件中并将用户重定向到新文件位置。< / p>