我对PHP很陌生,但试图找到我迄今为止运作良好的方式。
问题如下:我有一个有2个链接的网站。两者都应重定向到相同的第二个网站,但根据点击的链接,某些值应该更改。我试图使用PHP会话。
以下是截至目前的代码:
链接1:
<a href="<? echo $link ?>" class="helsinki" onclick="<? $_SESSION['clicked']= "helsinki"; ?>"^^Helsinki^^</a>
链接2:
<a href="<? echo $link ?>" class="seattle" onclick="<? $_SESSION['clicked']= "seattle"; ?>">^^Seattle^^</a>
现在,如果我尝试阅读下一个点击了哪个链接:
<? if(isset($_SESSION['clicked']))
echo "clicked ". $_SESSION['clicked'];
?>
我总是看到“西雅图”,赫尔辛基永远不会出现,虽然(我想)如果点击西雅图链接,我输入西雅图。显然它不是那样的......任何人都可以帮助我吗?
答案 0 :(得分:1)
这是因为PHP代码是服务器端,因此在页面请求时执行。因此$_SESSION['clicked']
设置为helsinki
,然后在第一页加载时重置为seattle
。您可能希望使用$_GET
变量而不是$_SESSION
变量。
答案 1 :(得分:1)
等待等待一秒钟:PHP是“服务器端”,javascript是“客户端”。这意味着你将始终在javascript之前执行PHP。
您尝试实现的目标可以通过GET变量完成:
<a href="<?= $link ?>?city=seattle">^^Seattle^^</a>
<a href="<?= $link ?>?city=helsinki">^^Helsinki^^</a>
与第二个网站相比,您可以获得我们参数的值:
$city = $_GET['city'];
答案 2 :(得分:1)
不确定这是否有用,但您可以创建“重定向器”。它将用户带到服务器端页面,将其重定向到最终页面,同时更改会话。
页面:
<a href="redirector.php?link=helsinki"> ... </a>
<a href="redirector.php?link=seattle"> ... </a>
redirector.php
的代码:
<?php
session_start();
// determine where to redirect user (could be done with database or array of options)
switch ($_GET['link']) {
case 'helsinki':
header('Location: /link/to/helsinki');
break;
case 'seattle':
header('Location: /link/to/seattle');
break;
default:
return;
}
$_SESSION['clicked'] = $_GET['link'];
答案 3 :(得分:0)
你正在混淆Javascript和PHP。
PHP是服务器端,这意味着所有PHP代码都在服务器端解析并执行,然后被发送到客户端。
所以,如果你写
line #1: <a href="<? echo $link ?>" class="helsinki" onclick="<? $_SESSION['clicked']= "helsinki"; ?>">^^Helsinki^^</a>
然后
line #2: <a href="<? echo $link ?>" class="seattle" onclick="<? $_SESSION['clicked']= "seattle"; ?>">^^Seattle^^</a>
$_SESSION['clicked']
的值始终是第一个“赫尔辛基”(第1行),但后来被“西雅图”(第2行)立即覆盖。
为了实现您希望脚本实现的目标,例如,如下所示:
<a href="?location=helsinki" class="helsinki">^^Helsinki^^</a>
<a href="?location=seattle" class="seattle">^^Seattle^^</a>
然后从PHP变量$_GET
中捕获已发送的变量:
if (isset($_GET['location'])) {
if ($_GET['location'] == "helsinki") {
// Whatever
}
elseif ($_GET['location'] == "seattle") {
// You want
}
}
答案 4 :(得分:0)
<a href="<? echo $link.'?location="helsinki"'; ?>">"^^Helsinki^^</a>
<a href="<? echo $link.'?location="seattle"'; ?>">"^^Seattle^^</a>
并在另一页上使用$_GET['location']
查看 helsinki 或 seattle 的天气。
<{1}}对于两个链接都应该相同。
此外,您不能将PHP(服务器端)与Javascript(客户端)混合使用。查看原因。
答案 5 :(得分:0)
您无法在onclick
事件中编写PHP代码。如果你想这样做,你应该使用Javascript / AJAX。即使你这样做,你也不会按照自己的意愿得到结果,因为AJAX请求会延迟几秒钟。
我认为做这种事情的正确方法如下:
<a href="change_city.php?city=helsinki" class="helsinki">Helsinki"</a>
这是change_city.php
:
<?php
$_SESSION["clicked"] = $_GET["city"];
?>
如果您仍想使用$link
,那么您只需将上面的代码放在PHP文件的顶部。