我已经创建了一个私人消息系统但我在$ _GET时遇到了烦人的问题。
首先,这里是" sendmail.php"的完整代码。用于表单发送邮件的页面
<?php
include("header.php");
include("connect.php");
$mailid = $_GET['username'];
$replyname = $_GET['user'];
?>
<form action="send.php" method="post" name="sendpm">
<table>
<tr>
<td>
<font color='orange'>To</font>
</td>
<?php IF ($mailid != ''){ ?>
<td>
<input type="text" name="touser" id="touser" value="<?php echo $mailid;?>"/>
</td>
<?php }elseif($replyname != ''){ ?>
<td>
<input type="text" name="touser" id="touser" value="<?php echo $replyname;?>"/>
</td>
<?php }else{ ?>
<td>
<input type="text" name="touser" id="touser" value="<?php echo $replyname;?>"/>
</td>
<?php } ?>
</tr>
<tr>
<td>
<font color='orange'>Subject</font>
</td>
<td>
<input type="text" name="subject" id="subject" />
</td>
</tr>
<tr>
<td>
<font color='orange'>Message</font>
</td>
<td>
<textarea name="message" cols="60" rows="10" id="message"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Send PM" />
</td>
</tr>
</table>
</form>
<?php
include("footer.php");
?>
好的,你可以在这里看到
$mailid = $_GET['username'];
$replyname = $_GET['user'];
我可以根据它的来源获得两种不同的结果。 &#34; mailid&#34;如果您是从个人资料中导演的话。 &#34;回复姓名&#34;如果你点击了#34;回复&#34;收到你收到的信息。
现在,如果我尝试从头开始发送邮件,我会被告知&#34;用户名&#34;和&#34;用户&#34;未定义(因为我没有来自包含它们的链接)。如果我来自一个链接,那么另一个将是未定义的,反之亦然。
我可以解决&#39;这可以通过添加isset
但由于某种原因,继续显示&#34; 1&#34;而不是应该显示的用户名(如果我遵循没有isset的链接,则显示IS。)
这非常烦人,而且我已经尝试解决它多年了!
我刚刚意识到isset交易的真假。所以&#34; 1&#34;意味着它是真的,所以我把它改成了
IF(isset($_GET['username'])){
$mailid = $_GET['username'];
}
IF(isset($_GET['user'])){
$replyname = $_GET['user'];
}
我认为这样会好,但仍显示1?
答案 0 :(得分:0)
尝试 -
$mailid = isset($_GET['username']) ? $_GET['username'] : false;
$replyname = isset($_GET['user']) ? $_GET['user'] : false;
isset
返回boolean
。
答案 1 :(得分:0)
如果您还检查!empty($ var)或尝试使用filter_input()
,也许它可以正常工作$mailid = filter_input(INPUT_GET, 'username');
答案 2 :(得分:0)
我自己修好了(用了2个小时就把它解决了,发布到这里然后马上看看......)
IF(isset($_GET['username'])){
$mailid = $_GET['username'];
}
IF(isset($_GET['user'])){
$replyname = $_GET['user'];
}
这是因为isset只会检查它是否真实。
所以它基本上说&#34;如果用户名是真的,变量就变成用户名&#34;
答案 3 :(得分:0)
我在您的代码中看不到isset
,因此您不清楚如何使用它。
通常你会这样(我更喜欢empty
而不是isset
):
$mailIdOrName = "";
if (!empty($_GET['username'])) {
$mailIdOrName = $_GET['username'];
} elseif (!empty($_GET['user'])) {
$mailIdOrName = $_GET['user'];
}
/* Later you will not need if-elseif-else */
<input type="text" name="touser" id="touser" value="<?php echo $mailIdOrName;?>"/>
答案 4 :(得分:0)
我想知道你是如何使用isset的。如果您正在尝试这样的事情
$mailid = isset($_GET['username']);
$replyname = isset($_GET['user']);
然后它将返回布尔值。
试试这个。
<?php
include("header.php");
include("connect.php");
?>
<form action="send.php" method="post" name="sendpm">
<table>
<tr>
<td>
<font color='orange'>To</font>
</td>
<td>
<input type="text" name="touser" id="touser" value="<?php echo isset($_GET['username'])?$_GET['username']:$_GET['user']; ?>"/>
</td>
</tr>
<tr>
<td>
<font color='orange'>Subject</font>
</td>
<td>
<input type="text" name="subject" id="subject" />
</td>
</tr>
<tr>
<td>
<font color='orange'>Message</font>
</td>
<td>
<textarea name="message" cols="60" rows="10" id="message"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Send PM" />
</td>
</tr>
</table>
</form>
并且不要忘记过滤您的输入。