我已经参考了这个question但不幸的是,解决方案在我的情况下不适用于注册表格。
我的用户注册分两步进行。
第1步: 首先我们收到用户电子邮件,然后通过发送注册链接进行验证。在链接上,我们包括联盟代码,电子邮件和&电子邮件以散列形式,电子邮件发送时间等 这部分完美无缺。
第2步:
在注册链接页面上,所有额外的variables
全部表单加载。首先,所有变量。
我们使用以下代码片段检查注册链接是否有效,有效期等。
if(isset($_GET['key'],$_GET['reset'],$_GET['keyid'],$_GET['af']))
然后当一切都好的时候我们会转到主注册表单,否则,表单不会加载无效链接。
使用LasVegasCoder编码,这是注册链接:(与我原来没有太大区别)
以下是表单代码:
<form method="post" class="form-horizontal" name="registration_form"
action="<?php echo esc_url($_SERVER['PHP_SELF'].'?
key="'.$email."&reset=".$email_hash."&keyid=".$email_time."&af=".$af_code)?>">
Somecode
</form>
使用当前表单编码,它显示错误。
错误403.禁止访问。
表单包含用户名,PIN,国家,密码和&amp;确认密码字段。如果用户输入错误的详细信息,我会从服务器端检查其参数,然后在同一页面上显示错误。否则注册成功移至其他页面。
更新 整个过程涉及2个文件。
如果用户提供了任何错误的输入,它会显示在register.php页面上,填写表格。
if (!empty($error_msg)) {
echo $error_msg;
}
这个$ error_msg来自register.inc.php文件。希望它现在能清除一切。
答案 0 :(得分:1)
嗯,你在表单的URL和方法POST中传递了GET参数。但是你需要选择一种方法,你不能同时使用GET和POST 。因此,最好的方法是使用POST中传递的所有GET值的隐藏输入。
你可以省略动作参数,它会在同一页面上发布表格。
例如:
<form method="post" class="form-horizontal" name="registration_form">
<input type="hidden" name="key" value="<?php echo $email;?>">
<input type="hidden" name="reset" value="<?php echo $email_hash;?>">
<input type="hidden" name="keyid" value="<?php echo $email_time;?>">
<input type="hidden" name="af" value="<?php echo $af_code;?>">
Somecode
</form>
答案 1 :(得分:1)
但如果坚持在开发中使用它,您可以连接您的链接并将其作为查询参数附加,如下所示:
$link = "$email";
$link .= "&reset=$email_hash";
$link .= "&keyid=$email_time";
$link .= "&af=$af_code";
<form method="get" class="form-horizontal" name="registration_form"
action="<?php echo esc_url($_SERVER['PHP_SELF'])?key=$link; ?>">
Somecode
</form>
$link = "$email";
$link .= "&reset=$email_hash";
$link .= "&keyid=$email_time";
$link .= "&af=$af_code";
<form method="get" class="form-horizontal" name="registration_form"
action="process.php?key=$link" >
other codes goes here
</form>
$link = "$email";
$link .= "&reset=$email_hash";
$link .= "&keyid=$email_time";
$link .= "&af=$af_code";
$activation = "http://your-domain.com/activate.php?key=$link";
// send email to our new client;
$mailTo = $email;
$mailFrom = "noreply@your-domain.com";
$subject = "Welcome to My Affiliate Service";
$headers = "From: $mailFrom";
$mailBody = "Please activate your account to start banking revenue!
<a href=' . $activation . '>ACTIVAT NOW</a>";
if( @mail( $mailTo, $subject, $mailBody, $headers ) )
{
//mail sent
// do something
}
else{
// mail not sent..
// check why.
}
祝你好运
答案 2 :(得分:1)
如果你想留在同一页面,你不必输入。只需从?
开始,您就可以使用这些参数提交到当前页面:
$formAction = '?key="'.$email.'&reset='.$email_hash.'&keyid='.$email_time.'&af='.$af_code;
<form method="post" class="form-horizontal" name="registration_form"
action="<?=formAction?>">
<!-- FORM HERE -->
</form>
无论如何,使用PHP_SELF是一个坏主意。