社区首页 >问答首页 >向action.php添加reCaptcha

向action.php添加reCaptcha
EN

Stack Overflow用户
提问于 2019-03-15 07:23:29
回答 1查看 63关注 0票数 0

非常业余的开发人员谁可以剪切和粘贴,我正在尝试添加一个reCaptcha v2到一个旧的html / php网站,

我已经让验证码工作了,唯一的问题是当表单提交时,它会转到实际的地址/action.php,并显示一些代码+“谢谢”消息。

代码语言:javascript
代码运行次数:0
复制
         <?php
if($_POST) {

require('constant.php'); 

$user_name      = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
$user_email     = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
$user_phone     = filter_var($_POST["phone"], FILTER_SANITIZE_STRING);
$content   = filter_var($_POST["content"], FILTER_SANITIZE_STRING);

if(empty($user_name)) {
    $empty[] = "<b>Name</b>";       
}
if(empty($user_email)) {
    $empty[] = "<b>Email</b>";
}
if(empty($user_phone)) {
    $empty[] = "<b>Phone Number</b>";
}   
if(empty($content)) {
    $empty[] = "<b>Comments</b>";
}

if(!empty($empty)) {
    $output = json_encode(array('type'=>'error', 'text' => implode(", ",$empty) . ' Required!'));
    die($output);
}

if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation
    $output = json_encode(array('type'=>'error', 'text' => '<b>'.$user_email.'</b> is an invalid Email, please correct it.'));
    die($output);
}

//reCAPTCHA validation
if (isset($_POST['g-recaptcha-response'])) {

    require('component/recaptcha/src/autoload.php');        

    $recaptcha = new \ReCaptcha\ReCaptcha(SECRET_KEY, new \ReCaptcha\RequestMethod\SocketPost());

    $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);

      if (!$resp->isSuccess()) {
            $output = json_encode(array('type'=>'error', 'text' => '<b>Captcha</b> Please try the captcha again!'));
            die($output);               
      } 
}

$toEmail = "email@email.com";
$mailHeaders = "From: " . $user_name . "<" . $user_email . ">\r\n";
    $mailBody = "User Name: " . $user_name . "\n";
$mailBody .= "User Email: " . $user_email . "\n";
$mailBody .= "Phone: " . $user_phone . "\n";
$mailBody .= "Content: " . $content . "\n";
if (mail($toEmail, "Contact Mail", $mailBody, $mailHeaders)) {
    $output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_name .', thank you for the comments. We will get back to you shortly.'));
    die($output);
} else {
    $output = json_encode(array('type'=>'error', 'text' => 'Unable to send email, please contact'.SENDER_EMAIL));
    die($output);
}
}?>

HTML如下所示

代码语言:javascript
代码运行次数:0
复制
    <form id="frmContact" action="action.php" method="POST" novalidate="novalidate">
<div class="label">Name:</div>
<div class="field">
    <input type="text" id="name" name="name"
        placeholder="enter your name here"
        title="Please enter your name" class="required"
        aria-required="true" required>
</div>
<div class="label">Email:</div>
<div class="field">
    <input type="text" id="email" name="email"
        placeholder="enter your email address here"
        title="Please enter your email address"
        class="required email" aria-required="true" required>
</div>
<div class="label">Phone Number:</div>
<div class="field">
    <input type="text" id="phone" name="phone"
        placeholder="enter your phone number here"
        title="Please enter your phone number"
        class="required phone" aria-required="true" required>
</div>
<div class="label">Comments:</div>
<div class="field">
    <textarea id="comment-content" name="content"
        placeholder="enter your comments here"></textarea>
</div>
<div class="g-recaptcha" data-sitekey="**My-Site-Key**"></div>
<div id="mail-status"></div>
<button type="Submit" id="send-message" style="clear: both;">Send
    Message</button>

它显示以下Screenshot

我希望它不是加载一个新的网页,而是只显示下面的消息或其他什么。

任何建议都将不胜感激,皮特

EN

回答 1

Stack Overflow用户

发布于 2019-03-15 07:41:02

我刚刚意识到问题是您正在使用另一个页面来处理recaptcha。如果您将HTML添加到php页面的末尾,则可以对HTML公式和PhP处理使用相同的页面。(在下面的旧部分中,我认为它是同一页),所以这就解决了它。因为action.php与公式页不同,所以它在空的action.php页而不是公式页上发布输出。如果使用下面列出的javascript,您仍然可以这样做!PhP和超文本标记语言在同一页上。

希望能有所帮助

下面是老部分!!

它输出"{type:message“之类的内容的原因是使用了"json_encode”。如果这不是问题所在,我猜你只是想把它添加到页面上。为此,您可以尝试使用AJAX请求,因为它可以动态更新网页,而无需重新加载。但是我要做的(因为我是一个菜鸟xD),我会让PhP输出一个变化的javascript代码和空标签。就像这样。

代码语言:javascript
代码运行次数:0
复制
<p id="output"></p>

然后将php添加到输出JavaScript。

代码语言:javascript
代码运行次数:0
复制
echo '<script>var elementOfIntrest = document.getElementById("output");elementOfIntrest.innerHTML = "Hi' . $user_name . ', thank you for the comments. We will get back to you shortly.";</script>';

然而,这仍然会使网页重新加载新的信息。

我不能百分之百地确定它会像你想要的那样工作(不是很确定你想要什么),但希望它能有所帮助。

如果你想通过AJAX请求来实现,你可以阅读更多的here

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55177516

复制
相关文章
iOS开发过程中的奇淫技巧记录
为了修改带分组tableview的section header跟随置顶的问题,网上的奇淫技巧比方通过修改scroller的回调方法,体验不好,正规的方法是修改为tableView的UITableViewStyleGrouped模式,但该模式下列表section Header的高度过高,需要设置一个footer的高度:
呱牛笔记
2023/05/02
6060
iOS开发过程中的奇淫技巧记录
UITextView字数限制
经常做,经常忘,记下来,以后好直接拷贝。 开始使用如下方法做限制 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqualToString:@""] && range.length > 0) { //删除字符肯定是安全的 return YES; }
王大锤
2018/07/04
2.7K0
UITextView Link 颜色
UITextView 设置 NSAttributedString.Key.foregroundColor : UIColor.qvmedi_color(withHEX: 0x304EFF) 不起作用 新增 textView.linkTextAttributes = [:] textView.attributedText = attrStr
developerbfl
2021/04/19
1.9K0
如何隐藏tableHeaderView或tableFooterView
在项目中,因为同一页面结构体不同,头部是相同的结构,用了两个不同的tableView,头部是统一的view,但是发现tableView.tableHeaderView=_headerView只赋值一次,不支持来回赋值,打印出 NSLog(@"%@",_headerView.superview)仍然是上一个tableview视图。
honey缘木鱼
2019/11/04
1.1K0
UITextView字数限制
经常做,经常忘,记下来,以后好直接拷贝。 开始使用如下方法做限制 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqualToString:@""] && range.length > 0) { //删除字符肯定是安全的 return YES; }
王大锤
2018/05/17
2.4K0
自定义UITextView
自定义UITextView,带有placeholeder,可以设置placeholeder文字的大小和颜色。
hrscy
2018/08/30
5770
自定义UITextView
iOS中UITextView方法解读 原
@property(nonatomic,assign) id<UITextViewDelegate> delegate;
珲少
2018/08/16
9720
设置UITextView的行间距
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53261917
用户1451823
2018/09/13
2K0
UITextView 手势触发 TouchesBegan 函数
前几天做了个手势可以改变文章字体大小的功能。开始,在当前view中添加一个UITextView ,然后添加- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event函数,可怎么也触发不了,在网上找了些资料,说得也不是很清楚,今天把它总结下。
全栈程序员站长
2022/09/16
1.3K0
改变UITextView的边框颜色
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/51086444
用户1451823
2018/09/13
2.1K0
iOS 10 ~ iOS 15 tableview 适配(使用注意事项)
参考:https://www.jianshu.com/p/b42030a37953 https://blog.csdn.net/weixin_34037977/article/details/91634236
清墨
2022/11/12
2.1K0
iOS 10 ~ iOS 15 tableview 适配(使用注意事项)
【IOS开发基础系列】UITextView专题
frame.size.height = self.serTextView.contentSize.height;
江中散人_Jun
2023/10/16
4430
【IOS开发基础系列】UITextView专题
iOS - 解决tableHeaderView添加searchBar后出现的问题
无语了,遇到这个问题,虽然解决了,但接下来还是得好好找找问题的原因所在~~ 问题重现 未修改前的代码 self.tableView.tableHeaderView = self.searchCon
LinXunFeng
2018/06/29
9600
[iOS] 输入框高度随输入内容变化
对于第一点,有一个方便的计算方法,就是获取UITextView内容的高度比上UITextView的字体的高度,即可得到当前的行数。
wOw
2018/09/18
2.5K0
自定义UIPageControl、UITextView占位视图
一言不合先上效果图: ①、自定义的UIPageControl是继承于UIView,封装好的,可以设置图标大小,形状,图片 ,颜色,间隔,当然,需要的话,也可以自定义图标视图;详情请按快捷键Ctrl +
且行且珍惜_iOS
2018/05/22
8610
UITextView自动滚动的解决方案
思路:UIView加载完成3后,用NSTimer结合setContentOffset将UITextView向下滚动1像素。在滚动到底部的时候停止NSTimer。每当手动滚动UITextView前销毁NSTimer,滚动后重新创建NSTimer。 NSTimer *timer; - (void)viewDidLoad { [self performSelector:@selector(resetText) withObject:nil afterDelay:3.0f]; } - (void)resetTe
用户1172164
2018/01/16
1.5K0
刹车盘固有频率检测系统
汽车刹车系统是由刹车盘 (disc)、卡钳 (bracket)、来令片 (pad)、以及托架 (bracket) 所组成。当这些刹车系统部件的固有频率因设计不良或制造不良而导致耦合时,就会在刹车时,因摩擦行为产生的激振力传入系统,而产生共振行为,进而导致刹车异音的发生。
SHOUT
2022/05/31
6250
刹车盘固有频率检测系统
iOS开发中利用runtime设置UITextView的默认文字
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/75258532
用户1451823
2018/09/13
6270
iOS-UITableView 之 tableHeaderView 遮挡后面 cell 的问题
1. 理想状态下的 tableHeaderView(见下图): 理想状态下的tableView.png 2. 但是有时候会出现这种情况(见下图): tableHeaderView遮挡住cel
用户1890628
2018/05/10
3.2K0
点击加载更多

相似问题

SwiftUI ScrollView中包装的非滚动UITextView的固有高度

13

动态设置tableHeaderView高度

105

tableHeaderView中的UITextView找不到委托

11

tableHeaderView的高度似乎为0

11

iOS 7无法更改TableHeaderView的高度

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档