本文目录一览:
php如何实现邮箱验证
这是一个可以发送邮件的程序。程序是直接使用SMTP协议进行发送,用到了经典的phpMailer库。
请阅读apply.php文件。
发邮件之前你需要一个用来发送邮件的邮箱账号。但不能使用这个账号发送太多的邮件,否则会被当做垃圾邮件屏蔽。如果发送量较大,可以多申请几个邮箱。
关键变量说明:
subject: 邮件的主题
email: 邮件的内容
host: SMTP主机,与你申请的邮箱的服务商有关,详见代码内注释
fromname: 发件人的名字,可以任意写,对方收到时能看到这个名字
from: 发件人地址
to: 收件人地址,代码中写了$to = $from,请自行更改
username和password: 你邮箱的账号和密码,一般username都等于发件人地址。必须提供,否则无法发送邮件。
PHPMailer说明:
$mailer = new PHPMailer(true);
$mailer-IsHTML(true); // 这是一封HTML邮件
$mailer-IsSMTP(true); // 连接SMTP服务发送邮件
# $mailer-SMTPDebug = true; // 是否开启调试模式
$mailer-CharSet = 'UTF-8'; // 邮件内容的编码,和你程序的编码保持一致
$mailer-Encoding = 'base64'; // 邮件传递过程使用的编码
$mailer-FromName = $fromname; // 发件人
$mailer-Host = $host; // SMTP服务地址
$mailer-AddAddress($to); // 添加收件人
$mailer-From = $from; // 设置发件人
$mailer-Subject = $subject; // 设置主题
$mailer-MsgHTML($email); // 设置HTML邮件内容
$mailer-SMTPAuth = true; // 开启SMTP验证
$mailer-Username = $username; // 设置用户名
$mailer-Password = $passwd; // 设置密码
$mailer-Send(); // 发送邮件
php怎样验证表单文本区域内容是否已存在数据库中?
方法:查询数据,若数据存在则输出(前端这个要自己写,我只写了一个echo)
代码如下:
//$conn = new mysqli($sql_server_name, $sql_username, $sql_password, $sql_db);
$timu = $_GET["timu"];
$sql = $conn-query("查询 * from problems where timu
='". $timu . "'"); // 从problems库里查 注意把“查询”改成“select”,因为百度知道会屏蔽sql语句
if (mysqli_fetch_assoc($sql) 0) {
echo "已存在";
} else {
echo "不存在";
}
PHP 做的后台,如何“实名验证”
实名认证牵涉公安备案系统,请想公安机关申请接口进行验证。
否则只能用身份证生成规则进行验证,但是这样验证不是百分之百准确的
以下附上PHP 身份证规则验证代码
/*/
# CopyRight: zxing
# Document: 检查符合 GB11643-1999 标准的身份证号码的正确性
# File:gb11643_1999.func.php Fri Mar 28 09:42:41 CST 2008 zxing
# Updated:Fri Mar 28 09:42:41 CST 2008
# Note: 调用函数 check_id();
#/*///
$id =array();
$id[] = '370882198601064774';
$id[] = '420502198611281126';
$id[] = '370882198601064770';
$id[] = '370882860106477';
$id[] = '63212519850703214x';
$id[] = '429021198203221006';
$id[] = '429036198203211023';
foreach ($id as $key = $value){
echo check_id($value)?$value.' 是真的!br/': $value.' 是假的!br/';
}
#/*/
/*/
# 函数功能:计算身份证号码中的检校码
# 函数名称:idcard_verify_number
# 参数表 :string $idcard_base 身份证号码的前十七位
# 返回值 :string 检校码
# 更新时间:Fri Mar 28 09:50:19 CST 2008
/*/
function idcard_verify_number($idcard_base){
if (strlen($idcard_base) != 17){
return false;
}
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //debug 加权因子
$verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); //debug 校验码对应值
$checksum = 0;
for ($i = 0; $i strlen($idcard_base); $i++){
$checksum += substr($idcard_base, $i, 1) * $factor[$i];
}
$mod = $checksum % 11;
$verify_number = $verify_number_list[$mod];
return $verify_number;
}
/*/
# 函数功能:将15位身份证升级到18位
# 函数名称:idcard_15to18
# 参数表 :string $idcard 十五位身份证号码
# 返回值 :string
# 更新时间:Fri Mar 28 09:49:13 CST 2008
/*/
function idcard_15to18($idcard){
if (strlen($idcard) != 15){
return false;
}else{// 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
if (array_search(substr($idcard, 12, 3), array('996', '997', '998', '999')) !== false){
$idcard = substr($idcard, 0, 6) . '18'. substr($idcard, 6, 9);
}else{
$idcard = substr($idcard, 0, 6) . '19'. substr($idcard, 6, 9);
}
}
$idcard = $idcard . idcard_verify_number($idcard);
return $idcard;
}
/*/
# 函数功能:18位身份证校验码有效性检查
# 函数名称:idcard_checksum18
# 参数表 :string $idcard 十八位身份证号码
# 返回值 :bool
# 更新时间:Fri Mar 28 09:48:36 CST 2008
/*/
function idcard_checksum18($idcard){
if (strlen($idcard) != 18){ return false; }
$idcard_base = substr($idcard, 0, 17);
if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
return false;
}else{
return true;
}
}
/*/
# 函数功能:身份证号码检查接口函数
# 函数名称:check_id
# 参数表 :string $idcard 身份证号码
# 返回值 :bool 是否正确
# 更新时间:Fri Mar 28 09:47:43 CST 2008
/*/
function check_id($idcard) {
if(strlen($idcard) == 15 || strlen($idcard) == 18){
if(strlen($idcard) == 15){
$idcard = idcard_15to18($idcard);
}
if(idcard_checksum18($idcard)){
return true;
}else{
return false;
}
}else{
return false;
}
}
把前端表单数据验证过了,后端PHP如何验证
提交到一个php页面。比如check.php
$_POST接收数据。
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "select id from user where username='$username' and password='$password'";
如果结果存在,说明有名字密码正确。
如何用PHP生成验证码
PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中。PHP生成验证码的大致流程有:
1、产生一张png的图片;
2、为图片设置背景色;
3、设置字体颜色和样式;
4、产生4位数的随机的验证码;
5、把产生的每个字符调整旋转角度和位置画到png图片上;
6、加入噪点和干扰线防止注册机器分析原图片来恶意破解验证码;
7、输出图片;
8、释放图片所占内存。
session_start();
getCode(4,60,20);
function getCode($num,$w,$h) {
$code = "";
for ($i = 0; $i $num; $i++) {
$code .= rand(0, 9);
}
//4位验证码也可以用rand(1000,9999)直接生成
//将生成的验证码写入session,备验证时用
$_SESSION["helloweba_num"] = $code;
//创建图片,定义颜色值
header("Content-type: image/PNG");
$im = imagecreate($w, $h);
$black = imagecolorallocate($im, 0, 0, 0);
$gray = imagecolorallocate($im, 200, 200, 200);
$bgcolor = imagecolorallocate($im, 255, 255, 255);
//填充背景
imagefill($im, 0, 0, $gray);
//画边框
imagerectangle($im, 0, 0, $w-1, $h-1, $black);
//随机绘制两条虚线,起干扰作用
$style = array ($black,$black,$black,$black,$black,
$gray,$gray,$gray,$gray,$gray
);
imagesetstyle($im, $style);
$y1 = rand(0, $h);
$y2 = rand(0, $h);
$y3 = rand(0, $h);
$y4 = rand(0, $h);
imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED);
imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED);
//在画布上随机生成大量黑点,起干扰作用;
for ($i = 0; $i 80; $i++) {
imagesetpixel($im, rand(0, $w), rand(0, $h), $black);
}
//将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
$strx = rand(3, 8);
for ($i = 0; $i $num; $i++) {
$strpos = rand(1, 6);
imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);
$strx += rand(8, 12);
}
imagepng($im);//输出图片
imagedestroy($im);//释放图片所占内存
}