2016-12-07 67 views
0

我正在构建结账页面,购买后应显示一次性下载链接。PHP从其他页面获取生成的链接

www.mydomain/generate.php?mypassword 

此链接生成一次性下载链接,它应该显示在结账页面上。

目前我使用:

$url = 'http://www.mydomain/generate.php?mypassword'; 
     $content = file_get_contents($url); 
     $get_div = explode('<div id="downloadlink" class="container">' , $content); 
     $get_end_div = explode("</div>" , $get_div[1]); 

     echo $get_end_div[0]; 

任何建议这将是更好的方式来获得结帐页面上生成的下载链接?

把上面的代码弄成白色,我有个大问题。当客户登陆结帐页面时,他/她可以在文件下载后刷新页面,当页面生成与他/她的新链接时。

我在这里学习,因此任何建议/建议,欢迎

+0

了解Ajax和尝试的下载链接AJAX http://www.w3schools.com /xml/ajax_intro.asp并尝试 – Ima

+0

@Ima我会wll,但我想在没有AJAX的情况下完成这个工作 –

+0

@Ima请问您可以举一个小例子来说明如何使用AJAX来完成这项工作? –

回答

0

另一个没有Ajax建议。

生成密码或要显示的任何数据,并保留在会话中或数据库中,并重定向到另一页,如http://www.mydomain/display.php。在那里你可以显示密码。也刷新不会生成新的链接。

您的“mypassword”在哪里生成? “这并不妨碍文件生成新的链接” - 什么是生成新的链接?我以为mypassword是再次生成。

假设“http://www.mydomain/generate.php?mypassword”页面正在生成密码链接,请使用以下方法。

checkout.php

<?php 
//After payment, you have mypassword now redirect to http://www.mydomain/generate.php'; 
$_SESSION['mypassword'] = 'mypassword'; 
header("Location:http://www.mydomain/display.php"); 

如果generate.php正在生成负载 Display.php的

$mypassword = !empty($_SESSION['mypassword']) ? $_SESSION['mypassword'] : null; 
if (!empty($mypassword)) 
{ 
    $url = 'http://www.mydomain/generate.php?'.$mypassword; 
    $content = file_get_contents($url); 
    $get_div = explode('<div id="downloadlink" class="container">' , $content); 
    $get_end_div = explode("</div>" , $get_div[1]); 
    echo $get_end_div[0]; 
    //Unset password to disable second download 
    unset($_SESSION['mypassword']); 
} 
else 
{ 
    echo "Invalid download link": 
} 
+0

有意义,但不能解决它背后的逻辑。比方说,我在'generate.php'文件中启动会话(它会产生一次性下载链接),并将下载链接保存在$ _SESSION变量中,然后在结账页面中包含'generate.php '文件,然后在结帐页面上使用$ _SESSION变量。我可以正确显示下载链接,但我错过了一些非常重要的内容,因为这不会阻止文件生成新链接。所以,如果你可以举一个小例子来帮助我理解这个过程背后的逻辑,我将非常感谢它 –

+0

我试图找出这几个小时已经,lol –

+0

查看更新的答案 – Ima