我正在使用rails 3下的设计认证插件.目前,我已经禁用了电子邮件确认,因此注册非常简单快捷.
我想知道是否需要某种验证码以保护网站再次机器人.我想避免让我的数据库充满假用户,虽然这对系统没有太大的伤害(除了填满磁盘!).
如果强烈建议使用验证码,如果登录/注册仅限于HTTPS,是否也是如此?机器人使用HTTPS吗?
我已经建立了一个网站,我希望在网页上有一个电子邮件联系表格,以便有人可以给我发消息.
我正在使用本网站的代码:http://www.w3schools.com/php/php_secure_mail.asp
我正在使用PHP停止电子邮件注入的部分
即使我的网站每天点击次数很少(比不到10个访问者),我发现我每天都会从"垃圾邮件发送者"那里收到3或4封邮件,他们似乎正在向我发送与主题无关的随机邮件网站问题.
我对这一切都很陌生,所以我想问一个问题:为什么我的PHP电子邮件形式吸引垃圾邮件,我该怎么做才能阻止它?
理想情况下,我想让真实用户尽可能轻松地与我联系,如果可能的话,如果我不必使用验证码,我会更喜欢它.
非常感谢
我正在使用的代码:
<html>
<body>
<?php
function spamcheck($field)
{
//filter_var() sanitizes the e-mail
//address using FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//filter_var() validates the e-mail
//address using FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
if (isset($_REQUEST['email']))
{//if "email" is filled out, proceed
//check if the email address is invalid
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{//send email
$email = $_REQUEST['email'] ;
$subject …Run Code Online (Sandbox Code Playgroud) 我想使用PHP imagettftext生成Captcha Image.以下是我的代码.它给出了一个空图像.我想解决这个问题.
我已经测试了代码,但无法找到为什么图像不是bieng显示,虽然我的随机文本被传递给验证码图像生成的功能.
<?php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
function generateCaptchaImage($text = 'good'){
echo $text;
echo 'OK';
// Set the content-type
header('Content-Type: image/png');
$width = 200;
$height = 30;
$font = 'ThisisKeSha.ttf';
// Create the image
$im = imagecreatetruecolor($width, $height);
//ADD NOISE - DRAW background squares
$square_count = 6;
for ($i = 0; $i …Run Code Online (Sandbox Code Playgroud) 我的 CodeIgniter 验证码没有生成,所以我无法在我的视图中显示它
控制器
public function login() {
$this->load->helper('captcha');
$this->form_validation->set_rules($this->login_rules);
$userCaptcha = set_value('captcha');
$word = $this->session->userdata('captchaWord');
if($this->form_validation->run() == TRUE && strcmp(strtoupper($userCaptcha),strtoupper($word)) == 0) {
$this->session->unset_userdata('captchaWord');
$username = $this->input->post('username');
$password = $this->input->post('password');
if(!$this->autentifikasi->login($username,$password)) {
$this->session->set_flashdata('pesan', '<div class="error">Login gagal</div>');
redirect(site_url('user/login'));
} else {
$this->session->set_flashdata('pesan', '<div class="sukses">Anda telah berhasil login, selamat berbelanja.</div>');
redirect(site_url('user/login'));
}
}
$original_string = array_merge(range(0,9), range('a','z'), range('A', 'Z'));
$original_string = implode("", $original_string);
$captcha = substr(str_shuffle($original_string), 0, 6);
$vals = array(
'word' => $captcha,
'img_path' => './captcha/',
'img_url' => base_url().'user/login/',
'font_path' …Run Code Online (Sandbox Code Playgroud) 我对 angularJS 比较陌生,我想知道以下问题的最干净的解决方案是什么。假设我有一个如下形式
<form name="contactform">
<select id="salutation" name="salutation" required="true" ng-model="contactRequest.salutation"><option value="Herr" selected="">Herr</option><option value="Frau">Frau</option></select>
<img width="255" height="70" alt="" src="/website/var/tmp/aed4d639a26c4614cdac2a967381c61c.png" name="captcha[img]">
<captcha-reloader reload-url="/refresh-captcha" img-tag-name="captcha[img]" hidden-field-name="captcha[id]"></captcha-reloader>
<input type="text" name="captcha[input]" required="true" ng-model="contactRequest.captcha.input">
<input type="text" style="display: none;" ng-model="contactRequest.captcha.id" value="aed4d639a26c4614cdac2a967381c61c" name="captcha[id]">
...
Run Code Online (Sandbox Code Playgroud)
如您所见,它使用一个指令来显示一个按钮,该按钮将重新加载 CAPTCHA。它被定义为
myApp.directive('captchaReloader', function () {
return {
restrict: 'E',
scope: {
reloadUrl: '@',
imgTagName: '@',
hiddenFieldName: '@'
}, //isolate scope
template: '<a href="" ng-click="reloadCaptcha()" class="captcha-reload"></a>',
link: function (scope, element, attrs) {
},
controller: function ($scope, $element, $attrs, $http) {
$scope.reloadCaptcha = function () …Run Code Online (Sandbox Code Playgroud) 我看过这个问题
并尝试将该问题的答案实施到我的代码中以验证我的表单,以便在验证码尚未完成时它不会提交。
但是什么也没有发生 - 它只是提交表单。
这是我的代码:
<head>
<script type="text/javascript">
var onloadCallback = function() {
grecaptcha.render('html_element', {
'sitekey' : 'my_site_key'
});
};
</script>
</head>
<div id="html_element"></div>
<br>
<input type="submit" value="Submit" onclick="myFunction">
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer>
function myFunction() {
if(grecaptcha.getResponse() == "")
alert("You can't proceed!");
else
alert("Thank you");}
</script>
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙吗?
编辑
<html>
<head>
<script type="text/javascript">
var onloadCallback = function() {
grecaptcha.render('html_element', {
'sitekey' : 'site-key'
});
};
onloadCallback();
$('form').on('submit', function(e) {
if(grecaptcha.getResponse() == "") {
e.preventDefault();
alert("You can't proceed!"); …Run Code Online (Sandbox Code Playgroud) 我需要自动解决验证码以从站点获取公共数据.
我使用python和opencv.我是解决图像处理问题的新手.在搜索之后,作为解决验证码的方法我接下来想出了.由于Captha中的文本使用相关颜色组,我尝试使用HSV格式和掩码,然后将图像转换为灰度并使用阈值(Adaptive_THRESH_MEAN_C)从图像中去除噪声.
但这还不足以消除噪音并使用OCR(Tesseract)提供自动文本识别.见下图.
在我的解决方案中有什么我可以改进的东西还是有更好的方法?
原始图片:

处理过的图片:

码:
import cv2
import numpy as np
img = cv2.imread("1.jpeg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, (36, 0, 0), (70, 255,255)) #green
# mask = cv2.inRange(hsv, (0, 0, 0), (10, 255, 255))
# mask = cv2.inRange(hsv, (125, 0, 0), (135, 255,255))
img = cv2.bitwise_and(img, img, mask=mask)
img[np.where((img == [0,0,0]).all(axis = 2))] = [255,255,255]
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 15, 2)
cv2.imwrite("out.png", img)
Run Code Online (Sandbox Code Playgroud) 我试图隔离验证码中的字母,我设法过滤了验证码,结果得到了这张黑白图像:
但是当我尝试使用 OpenCV 的 findContours 方法分离字母时,它只是发现了一个包裹我整个图像的外部轮廓,从而产生了这个图像(图像外的黑色轮廓)。
我将此代码与 Python 3 和 OpenCV 3.4.2.17 一起使用:
img = threshold_image(img)
cv2.imwrite("images/threshold.png", img)
image, contours, _ = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for i, contour in enumerate(contours):
area = cv2.contourArea(contour)
cv2.drawContours(img, contours, i, (0, 0, 0), 3)
cv2.imwrite('images/output3.png', img)
Run Code Online (Sandbox Code Playgroud)
我只希望我的最终结果是每个字符外有 5 个轮廓。
我的图像背景为浅紫色,字符为深蓝色。我的目标是从图像中识别文本。所以我试图从背景中去除浅紫色,以便我的图像没有噪音,但我找不到该图像的确切颜色代码,因为它在任何地方都有些不同,所以我无法掩盖图片。这是我的代码
import numpy as np
from PIL import Image
im = Image.open('capture.png')
im = im.convert('RGBA')
data = np.array(im)
rgb = data[:,:,:3]
color = [27, 49, 89] # Original value to be mask
black = [0,0,0, 255]
white = [255,255,255,255]
mask = np.all(rgb == color, axis = -1)
data[mask] = black
data[np.logical_not(mask)] = white
new_im = Image.fromarray(data)
new_im.save('new_file.png')
Run Code Online (Sandbox Code Playgroud)
所以我想如果我可以去除所有特定颜色范围内的颜色,比如 [R:0-20, G:0-20, B:80-100] 也许这会起作用。有人可以告诉我我该怎么做。
任何其他解决此问题的建议也将不胜感激。
python captcha opencv python-imaging-library python-tesseract
captcha ×10
python ×4
opencv ×3
php ×3
forms ×2
image ×2
javascript ×2
angularjs ×1
codeigniter ×1
color-picker ×1
cv2 ×1
devise ×1
email ×1
html ×1
imagettftext ×1
recaptcha ×1
spam ×1
text ×1
validation ×1