レンダリング:
シークレットカードストレージ
コードをコピー コードは次のとおりです:
$this->load->model('admin/m_mibao');
$data = array(); ;
//ランダムな横座標を生成します
$rand_str = $this->_rand_str(10);
for($k=0;$k
$rand = $this->_rand_num(3);
//すべてのコードに割り当てられたコンテナ
$arr[$rand_str {$ k} . $i] = $rand;
}
}
$data['code'] = Serialize($arr) //シリアル化後に情報をデータベースに格納します
$data['letter'] = $ rand_str ;
//重複するシリアル番号を避ける
while (TRUE)
{
$data['card_num'] = $this->_rand_num(20);
//シリアル番号が重複しているかどうかを判断する
if($this- >m_mibao->has_card_num($data['card_num']) == 0)
{
break;
}
$data['add_time'] =
$data['user_id'] = $; uid;
echo $this->mibao->insert($data);
シークレットカード画像生成
//座標public function show ($user_id) {
$this->load->model('admin/m_mibao')$info = $this->m_mibao->get_by_uid($user_id);
if(emptyempty($ info))
{
$this->msg('このユーザーにはパスワードがありません!','admin-index')
}
$codes = unserialize($info['code'] );
// 画像の初期値
$bit = 3 // セキュリティカードの桁数
$width = 626; // 画像の幅
$im = imagecreatetruecolor; 、$ linecolor = imagecoloralocate($ im、229,229,229); ($im,54,126, 76);
$left_rectangle_color = imagecolorallocate($im,243,247,255);
$left_num_color = imagecolorallocate($im,0,0,0); ;
imagefill($im,0,0,imagecolorallocate($im,255,255,255)); //画像の背景色
$font = './public/baomi/fonts/simsun.ttc' //フォント
$font_en = './public/baomi /fonts/CONSOLA.TTF'; //英語フォント
$font2 = './public/baomi/fonts/simhei.ttf'; //セキュリティカード上の太字フォント
$dst = imagecreatefromjpeg( "./public/baomi/ 120.jpg");
imagecopymerge($im,$dst,120,15,0,0,193,55,100); $linecolor);
$ltext = "電子セキュリティ カード"
if(!imagettftext($im,10,0,340,47,$logo_str_color,$font2,$ltext)) {
exit('error');
//カード番号を書き込みます
$b = '1000' . $info['card_num'];
for($i=0;$i$p.= substr($b, 3*$i,4) . ' ';
$x = 40; $y = 95; // シリアル番号の位置
imagettftext($x,$y,$font ,'シリアル番号');
imagettftext($im,11,0,$x+50,$y,$color,$font_en,$p);
//カラーボックス
imagefilledrectangle($im,10,106,$width) -10,128,$top_rectangle_color);
imagefilledrectangle($im,10,129,65,$height-10,$left_rectangle_color);
//一番上の行に英語の文字と縦線を書きます
for($i=1;$i< =10;$i++){
$x = $i*55+35; $y = 123; $float_size = 11; //文字位置パラメータ
imagettftext($im,$float_size,0,$x,$y, $top_letter_color,$font_en,$info ['letter']{$i-1});//一番上の英語の文字を書きます
}
for($i=0;$i<=9;$i++){
$ linex = $i*55+ 65; $liney2 = $height-10; //垂直線位置パラメータ
imageline($im,$linex,$liney,$liney2,$linecolor); //縦線を書きます
}
//縦に数字を書き、横線で行列データを埋めます
for($j=0;$j<8;$j++){
$jj=$j+1; $x=35; $ y=($jj*24)+123; //左行の数値と水平線の位置パラメータ
imagettftext($im, $float_size, 0, $x, $y, $left_num_color, $font_en , $jj);// 左の行に数値を書き込みます
for($i=1;$i<=10;$i++){ $x = $i*55+27; =$y; //行列データ位置パラメータを入力します
$s = $info['letter']{$i-1}
imagettftext($im,$float_size2; 0,$x,$sy,$fontcolor ,$font_en,$codes[$s]);//行列データを書き込む
}
}
for($j=0;$j<10;$j++){
$ line_x=10; $line_x2=$width -10;$y=$j*24+105; //水平線位置パラメータy座標データは上記と同じ
imageline($im,$line_x,$y,$line_x2) ,$y,$linecolor);//横線を描き込む Line
}
//外枠枠
imageline($im,10,10,$width-10,10,$linecolor);//横線
//imageline($im,10,$height-10,$width-10,$height-10,$linecolor);
imageline($im,10,10,10,$height-10,$linecolor);/ /vertical line
imageline($im,$width-10,10 ,$width-10,$height-10,$linecolor);
//画像を生成
ob_clean(); Content-type: image/ jpeg");
imagejpeg($im,null,100);
imagedestroy($im);
}
セキュリティカードの検証
コードをコピー
コードは次のとおりです:
パブリック関数 test1($uid)
{
$this->load->model('admin/m_users');
$user = $this->m_users->sel($uid); //投稿は検証のために送信されます
if($this->is_post())
{
$codes = $this->m_mibao->get_codes_by_uid($uid);
$codes = unserialize($codes);
$is_true = true;
foreach($_SESSION['mibao']['keys'] as $key)
{
if($codes[$key] != $_POST['values'][$key])
{$ is_true = false;
// ビューをレンダリングします
$info = $this->m_mibao->get_by_uid($uid);
$data = array();
$data['keys'] = $this->m_mibao-> get_rand_keys ($info['letter']);
$_SESSION['mibao']['keys'] = $data['uid'] = $uid; ;load->view('test1',$data);
このサイトからパッケージをダウンロード
上記では、PHP を使用してパスワード保護カード機能の実装コード「パッケージをダウンロードして直接実行する」を実装するフラッシュ チュートリアル パッケージのダウンロードを紹介します。これには、フラッシュ チュートリアル パッケージのダウンロードの内容も含まれます。興味のある友人に役立つことを願っています。 PHPのチュートリアル。