検索

フォームに検証コードを実装することが増えてきましたが、jsで書かれた検証コードはいつも不便に感じたので、phpで実装された検証コードを学びました。


フォームに検証コードが実装されることが増えてきましたが、jsで書かれた検証コードはいつも不便に感じたので、phpで実装された検証コードを学びました。そうですね、実際には何もすることがなかったのですが、時間を無駄にしたくなかったので、PHP で検証コードを実装する方法を学びました。ことわざにあるように、スキルが多すぎても負担にはなりません。さらに、関数にカプセル化することもできます。これは将来の使用に非常に便利です。もちろん、現在はカプセル化されていません。

次に、単純な純粋に数値的な検証コードについて説明します。

初心者の場合は、私のコードのコメント // 番号にステップバイステップで従うことをお勧めします。最も簡単な方法は、コード全体をコピーすることです。

新しい captcha.php を作成します:

php     //10>设置session,必须处于脚本最顶部     session_start();      $image = imagecreatetruecolor(100, 30);        //1>设置验证码图片大小的函数     //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);     $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff     //6>区域填充 int imagefill(int im, int x, int y, int col)  (x,y) 所在的区域着色,col 表示欲涂上的颜色     imagefill($image, 0, 0, $bgcolor);     //10>设置变量     $captcha_code = "";     //7>生成随机数字     for($i=0;$i<4;$i++){         //设置字体大小         $fontsize = 6;                 //设置字体颜色,随机颜色         $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));            //0-120深颜色         //设置数字         $fontcontent = rand(0,9);         //10>.=连续定义变量         $captcha_code .= $fontcontent;             //设置坐标         $x = ($i*100/4)+rand(5,10);         $y = rand(5,10);          imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);     }     //10>存到session     $_SESSION['authcode'] = $captcha_code;     //8>增加干扰元素,设置雪花点     for($i=0;$i<200;$i++){         //设置点的颜色,50-200颜色比数字浅,不干扰阅读         $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));                 //imagesetpixel — 画一个单一像素         imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);     }     //9>增加干扰元素,设置横线     for($i=0;$i<4;$i++){         //设置线的颜色         $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));         //设置线,两点一线         imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor);     }      //2>设置头部,image/png     header('Content-Type: image/png');     //3>imagepng() 建立png图形函数     imagepng($image);     //4>imagedestroy() 结束图形函数  销毁$image     imagedestroy($image);

次に、静的ページのコード:index.html

               <ol>                                          <li><p>doctype html> </p></li>                         <li><p><html> </p></li>                         <li><p>    <head> </p></li>                         <li><p>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </p></li>                         <li><p>        <title>确认验证码title> </p></li>                         <li><p>    head> </p></li>                         <li><p>    <body> </p></li>                         <li><p>        <form method="post" action="./form.php"> </p></li>                         <li><p>            <p>验证码: <img  id="captcha_img" border='1' src='./captcha.php?r=echo rand(); ? alt="PHPで検証コードを実装する方法" >'   style="max-width:90%" /> </p></li>                         <li><p>                <a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?a> </p></li>                         <li><p>            p> </p></li>                         <li><p>            <P>请输入验证码:<input type="text" name='authcode' value=''/>p> </p></li>                         <li><p>            <p><input type='submit' value='提交' style='padding:6px 5px;'/>p>     </p></li>                         <li><p>    body> </p></li>                         <li><p>html> <br /></p></li>                </ol>

index.html からわかるように、 , submit フォームは form.php なので、判定 form.php コードもあります:

               <ol>                                          <li><p>php </p></li>                         <li><p>    header("Content-Type:text/html;charset=utf-8");            //设置头部信息 </p></li>                         <li><p>    //isset()检测变量是否设置 </p></li>                         <li><p>    if(isset($_REQUEST['authcode'])){ </p></li>                         <li><p>        session_start(); </p></li>                         <li><p>        //strtolower()小写函数 </p></li>                         <li><p>        if(strtolower($_REQUEST['authcode'])== $_SESSION['authcode']){ </p></li>                         <li><p>            //跳转页面 </p></li>                         <li><p>            echo "<script language=\"javascript\">"; </p></li>                         <li><p>            echo "document.location=\"./form.php\""; </p></li>                         <li><p>            echo "</script>"; </p></li>                         <li><p>        }else{ </p></li>                         <li><p>            //提示以及跳转页面 </p></li>                         <li><p>            echo "<script language=\"javascript\">"; </p></li>                         <li><p>            echo "alert('输入错误!');"; </p></li>                         <li><p>            echo "document.location=\"./form.php\""; </p></li>                         <li><p>            echo "</script>"; </p></li>                         <li><p>        } </p></li>                         <li><p>        exit(); </p></li>                         <li><p>    } <br /></p></li>                </ol>

表示ページは以下の通りです:

なので、純粋な数値が実装されているため、英語に数値を追加するのは難しくないはずです。変更するコードは、captcha.php の //7>Generate Random Numbers を //7>Generate Random Letters and Numbers に変更するだけです。本当にかわいい場合は、これらの単語を変更するだけで実現できると思います。おめでとうございます。そして永遠に幸せでいてください。脳に障害のある子供たちはとても楽しんでいます。

これ以上ナンセンスはやめて、コードを引っ張ってみましょう。

php     //10>设置session,必须处于脚本最顶部     session_start();      $image = imagecreatetruecolor(100, 30);        //1>设置验证码图片大小的函数     //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);     $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff     //6>区域填充 int imagefill(int im, int x, int y, int col)  (x,y) 所在的区域着色,col 表示欲涂上的颜色     imagefill($image, 0, 0, $bgcolor);     //10>设置变量     $captcha_code = "";     //7>生成随机的字母和数字     for($i=0;$i<4;$i++){         //设置字体大小         $fontsize = 8;                 //设置字体颜色,随机颜色         $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));            //0-120深颜色         //设置需要随机取的值,去掉容易出错的值如0和o         $data ='abcdefghigkmnpqrstuvwxy3456789';         //取出值,字符串截取方法   strlen获取字符串长度         $fontcontent = substr($data, rand(0,strlen($data)),1);         //10>.=连续定义变量         $captcha_code .= $fontcontent;                 //设置坐标         $x = ($i*100/4)+rand(5,10);         $y = rand(5,10);          imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);     }     //10>存到session     $_SESSION['authcode'] = $captcha_code;     //8>增加干扰元素,设置雪花点     for($i=0;$i<200;$i++){         //设置点的颜色,50-200颜色比数字浅,不干扰阅读         $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));                 //imagesetpixel — 画一个单一像素         imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);     }     //9>增加干扰元素,设置横线     for($i=0;$i<4;$i++){         //设置线的颜色         $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));         //设置线,两点一线         imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor);     }      //2>设置头部,image/png     header('Content-Type: image/png');     //3>imagepng() 建立png图形函数     imagepng($image);     //4>imagedestroy() 结束图形函数  销毁$image     imagedestroy($image);

他の 2 つのページは変更できません。

一般的に言えば、今のところはこれで十分です。しかし、アニメと同じように、必ずエキストラが存在します。

それでは、漢字についての余談をしましょう。実は私も卒業制作に漢字認証コードを入れようと考えているんですが、今スライド認証コードが流行っているんですが、結局のところ私はjsの学習に特化していないんです。

さらに、私たちの認証コードには資料は必要なく、自分の知識を使用して 13 歳のふりをすることができ、設定する必要は何もないことをディベート教師に伝えることもできます。 。

php     //11>设置session,必须处于脚本最顶部     session_start();      //1>设置验证码图片大小的函数     $image = imagecreatetruecolor(200, 60);             //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);     $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff     //6>区域填充 int imagefill(int im, int x, int y, int col)  (x,y) 所在的区域着色,col 表示欲涂上的颜色     imagefill($image, 0, 0, $bgcolor);     //7>设置ttf字体     $fontface = 'FZYTK.TTF';     //7>设置字库,实现简单的数字储备     $str='天地不仁以万物为刍狗圣人不仁以百姓为刍狗这句经常出现在控诉暴君暴政上地残暴不仁把万物都当成低贱的猪狗来看待而那些高高在上的所谓圣人们也没两样还不是把我们老百姓也当成猪狗不如的东西但实在正取的解读是地不情感用事对万物一视同仁圣人不情感用事对百姓一视同仁执子之手与子偕老当男女主人公含情脉脉看着对方说了句执子之手与子偕老女方泪眼朦胧含羞地回一句讨厌啦这样的情节我们是不是见过很多但是我们来看看这句的原句死生契阔与子成说执子之手与子偕老于嗟阔兮不我活兮于嗟洵兮不我信兮意思是说战士之间的约定说要一起死现在和我约定的人都走了我怎么活啊赤裸裸的兄弟江湖战友友谊啊形容好基友的基情比男女之间的爱情要合适很多吧';     //str_split()切割字符串为一个数组,一个中文在utf_8为3个字符     $strdb = str_split($str,3);         //>11     $captcha_code = '';     //8>生成随机的汉子     for($i=0;$i<4;$i++){         //设置字体颜色,随机颜色         $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));            //0-120深颜色         //随机选取中文         $in = rand(0,count($strdb));         $cn = $strdb[$in];         //将中文记录到将保存到session的字符串中         $captcha_code .= $cn;         /*imagettftext (resource $image ,float $size ,float $angle ,int $x ,int $y,int $color,         string $fontfile ,string $text ) 幕布 ,尺寸,角度,坐标,颜色,字体路径,文本字符串         mt_rand()生成更好的随机数,比rand()快四倍*/         imagettftext($image, mt_rand(20,24),mt_rand(-60,60),(40*$i+20),mt_rand(30,35),$fontcolor,$fontface,$cn);     }     //11>存到session     $_SESSION['authcode'] = $captcha_code;     //9>增加干扰元素,设置点     for($i=0;$i<200;$i++){         //设置点的颜色,50-200颜色比数字浅,不干扰阅读         $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));                 //imagesetpixel — 画一个单一像素         imagesetpixel($image, rand(1,199), rand(1,59), $pointcolor);     }     //10>增加干扰元素,设置线     for($i=0;$i<4;$i++){         //设置线的颜色         $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));         //设置线,两点一线         imageline($image,rand(1,199), rand(1,59),rand(1,199), rand(1,59),$linecolor);     }      //2>设置头部,image/png     header('Content-Type: image/png');     //3>imagepng() 建立png图形函数     imagepng($image);     //4>imagedestroy() 结束图形函数  销毁$image     imagedestroy($image);

他のページは変更する必要はありません。

レンダリングは次のとおりです:


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。