我有一个基本的html表单页面,用户输入一个单词,然后提交到一个带有iframe的php页面,它在维基百科中搜索这个词,见下文:
<?php
$userEntered = $_POST["userEntered"];
echo
'<html xmlns="http://www.w3.org/1999/xhtml" lang="EN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Full Page IFrame</title>
<style type="text/css">
html {overflow: auto;}
html, body, div, iframe {margin: 0px; padding: 0px; height: 100%; border: none;}
iframe {display: block; width: 100%; border: none; overflow-y: auto; overflow-x: hidden;}
</style>
</head>
<body>
<iframe id="tree" name="tree" src="http://en.wikipedia.org/wiki/' . $userEntered . '" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" scrolling="auto"></iframe>
</body>
</html>';
?>
我想知道每次用户点击维基百科页面上的链接时如何创建新变量。
即使您导航到iframe中的新wikipeia页面,$ userEntered变量似乎也保持不变。
答案 0 :(得分:0)
这是你想要的(测试代码)
<?php
$userEntered = !empty($_POST["userEntered"])?$_POST["userEntered"]:'test';
echo
'<html xmlns="http://www.w3.org/1999/xhtml" lang="EN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Full Page IFrame</title>
<style type="text/css">
html {overflow: auto;}
html, body, div, iframe {margin: 0px; padding: 0px; height: 100%; border: none;}
iframe {display: block; width: 100%; border: none; overflow-y: auto; overflow-x: hidden;}
</style>
</head>
<body>
<form method="POST" >
<input type="text" name="userEntered">
<input type="submit" name="submit">
</form>
<iframe id="tree" name="tree" src="http://en.wikipedia.org/wiki/' . $userEntered . '" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" scrolling="auto"></iframe>
</body>
</html>';
?>
答案 1 :(得分:0)
这是不可能的(除非您控制维基百科域名)。
您无法检索iframe的网址,这是一件好事。如果有可能,任何人都可以设置网页并从URL中检索敏感信息。
此外,PHP是一种服务器端语言,它只是生成页面并传递它,之后发生的事情不是PHP所关心的。使用javascript检测页面中的更改。
编辑:解决同源问题的解决方案
要在更改后将iframe的URL传递给PHP,您必须使用javascript获取并发送URL。
使用jQuery的简单示例:
$(function() {
$('#tree').load(function() {
var frameUrl = $('#tree').contents().get(0).location.href;
$.post("backend.php", {url: frameUrl});
});
});
<?php
// Make sure it exists and filter it if necessary.
$url = $_POST['url'];