通过链接来回发送信息而不是使用session()(php和html)

问题描述 投票:1回答:1

哦,所以我有2个html页面和2个php页面。

这两个html页面包含名称和值参数的链接,具体取决于您单击的那个。

我想要完成的是:

  1. 在第一个html页面上单击链接(带有名称/值对)
  2. 这应该会带你到另一个html页面,你在第一页中点击的名称/值对应该转移到这个页面。
  3. 所有这一切都应该使用PHP完成。

我还没有得到这个工作,我不明白为什么我的解决方案不起作用。你能看一下吗?

代码如下:

第一个HTML页面:

<!DOCTYPE html>
<html lang="sv">
    <head>
		<title>doc1</title>
		<meta charset="UTF-8">
    </head>
    <body>
		<a href="doc1.php?namn=filip">namn</a><br>
		<a href="doc1.php?namn=fellman">namn</a>
    </body>
</html>

第一个PHP页面:

<?php

	$namn = $_GET["namn"];
	
	$html = file_get_contents("doc2.html");
	
	$rep = substr_replace('doc2.php?namn=', $namn, 14);
	
	$html = str_replace('---$namn---', $rep, $html);
	
	echo $html;
	
?>

第二个HTML页面:

<!DOCTYPE html>
<html lang="sv">
    <head>
		<title>doc2</title>
		<meta charset="UTF-8">
    </head>
    <body>
		<a href="doc2.php?land=finland">land</a><br>
		<a href="doc2.php?land=sverige">land</a>
		<a href="---$namn---" style="display:none">namn</a>
    </body>
</html>

第二个PHP页面:

<?php
	
	header("Content-Type: text/plain");
	
	echo "namn: " . $_GET["namn"]."\n";
	echo "land: " . $_GET["land"];
	
?>

如果你有一个更简单或更简单的解决方案,我很乐意知道。

如果我查看我的浏览器上的代码,我看到正确的数据被传输和替换,但“namn”变量是未定义的,它说..请参阅下面的错误代码:

Notice: Undefined index: namn in C:\Apache24\htdocs\WEB-SERVER\4.1.1 Information inbakad i länkar\doc2.php on line 5

姓名:国家:瑞典

php html
1个回答
0
投票

您正在尝试从查询字符串中获取两个值:

echo "namn: " . $_GET["namn"]."\n";
echo "land: " . $_GET["land"];

但是,您没有任何一个包含这两个值的请求。您有两个不同的链接,每个链接包含一个值:

<a href="doc2.php?land=sverige">land</a>
<a href="doc2.php?namn=filip" style="display:none">namn</a>

(其中一个的样式甚至没有显示......)

因此,无论您在哪两个不同的链接中单击一个,都不会设置其中一个值。

您需要一个包含两个值的链接:

<a href="doc2.php?namn=filip&land=sverige">land</a>

因此,在PHP替换文本之前,您的代码可能如下所示:

<a href="doc2.php?---$namn---&land=sverige">land</a>

当然,您还需要修改PHP字符串替换逻辑以解决新的字符串格式。你的方法是一个小手册,所以你必须稍微修改一下,观察实际的输出结果,以便根据需要进行调整。但你应该明白这个想法。

有多种方法可以延续价值,修改字符串,考虑如何对值进行URL编码等。但至少基本概念是URL需要两个值,而不仅仅是其中一个。

基本上,服务器不存储先前请求的信息。您需要将其存储在某个位置(例如会话状态)或包含有关后续请求的信息,例如URL中的查询字符串值。

© www.soinside.com 2019 - 2024. All rights reserved.