PHP学習まとめ(2)

まず、文字列の一般的なメソッド

1.文字列の取得

  • substr(string, str, len):文字列からその一部を取得します。
$str = "我爱我.的.祖国.png";
$s = substr(strrchr($str,'.'),1);
echo $s;
$arr = explode(".",$str);
$ext = array_pop($arr);
echo "<br>$ext<br>";
  • strstr(string, str) は、別の文字列内で最初に出現した文字列を検索し、その位置から文字列の末尾までのすべての文字を返します。
  • strrchr(string,str):別の文字列内で最後に出現した文字列を検索し、その位置から文字列の末尾までのすべての文字を返します。

2. 弦の交換

  • 文字列置換:文字列を使用して文字列内の一部の文字を置換します。

3. 文字列の計算

  • strlen(string):文字列の長さを取得します。
  • strpos(string,str,start):この関数は、最初に出現した文字列を検索するために使用され、整数を返します。
  • strrpos():文字列の最後の出現位置を特定します。
$str = "我爱我的祖国,我的祖国是中国";
$str = str_replace("祖国","国家", $str);
echo "<br>$str<br>";

2、時間

1.phpのタイムスタンプ

  • 定義: UNIX タイムスタンプ (タイムスタンプ) は、PHP における時刻と日付の非常に重要な概念であり、1970 年 1 月 1 日 00:00:00 から現在時刻までの秒数の合計を表します。
    PHP には、サーバーの現在時刻のタイムスタンプを取得するための組み込み関数 time() が用意されています。
<?php
echo time();
?>
  • Format time
    date() 関数は、時間をフォーマットし、文字列を返すために使用されます。
string date( string format [, int timestamp] )
  • 文字列をタイムスタンプに変換する
    strtotime("2021-10-20")

3. HTTP グローバル配列 (大文字)

  • $_GET[ ]
    すべての取得リクエストを取得します
<?php
echo $_REQUEST["nickname"]	//输出用户输入的称呼
echo $_REQUEST["id "];		//输出 10
?>
  • $_POST[ ]
    すべての投稿リクエストを取得します
<?php
echo '您的称呼是:',$_POST["nickname"]; 
?>
  • $_REQUEST[ ]
    t 個のリクエストをすべて取得 (get と post の両方を取得可能)
<?php
echo $_REQUEST["nickname"]	//输出用户输入的称呼
echo $_REQUEST["id "];		//输出 10
?>

4、jsonpメソッド

1.json_encode

PHP json_encode() は、変数を JSON でエンコードするために使用されます。関数が正常に実行された場合は JSON データを返し、それ以外の場合は FALSE を返します。

文法

string json_encode ( $value  )

<?php
   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   echo json_encode($arr);//{"a":1,"b":2,"c":3,"d":4,"e":5}
?>

2.json_decode

PHP json_decode() 関数は、JSON 形式の文字列をデコードし、PHP 変数に変換するために使用されます。

文法

mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

パラメータ

  • json_string :デコードされる JSON 文字列。UTF-8 でエンコードされたデータである必要があります。
  • assoc:このパラメータが TRUE の場合は配列が返され、FALSE の場合はオブジェクトが返されます。
  • Depth :再帰の深さを指定する整数型のパラメータ
  • options :バイナリ マスク。現在は JSON_BIGINT_AS_STRING のみがサポートされています。

<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
   var_dump(json_decode($json));
   var_dump(json_decode($json, true));
   //结果
   object(stdClass)#1 (5) {
    
    
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    
    
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
?>

5、ヘッダー方式

json形式で返す

header("Content-type: application/json");

HTML 形式を返し、エンコードが utf-8 であることを指定します

header("Content-type: text/html;charset=utf-8");

6. セッション概要

PHP セッションは、後で使用できるようにユーザー情報 (ユーザー名、購入内容など) をサーバーに保存することで、この問題を解決します。ただし、セッション情報は一時的なものであり、ユーザーがサイトを離れると削除されます。情報を永続的に保存する必要がある場合は、データをデータベースに保存できます。

セッションの動作メカニズムは次のとおりです。訪問者ごとに一意の ID (UID) を作成し、この UID に基づいて変数を保存します。UID は Cookie に保存されるか、URL を通じて送信されます。

セッションは、クライアントが Web サイト (サーバー) と通信するためのより安全な方法です。セッションセッションが開かれると、Web サイトのどのページでも使用 (維持) できるため、訪問者と Web サイトの間に「対話」メカニズムが確立されます。

セッションセッションでは、ユーザーを識別するためにセッションセッションを開いた訪問者ごとに一意のセッション ID が作成されます。このセッション ID は、ユーザーのコンピュータ上の Cookie に保存されるか、URL を通じて渡される場合があります。対応する特定のセッション値はサーバー側に保存されます。これが Cookie との主な違いでもあり、セキュリティは比較的高いです。

セッションを作成する

セッションを作成するには、まず session_start() 関数を使用してセッション セッションを開く必要があります。これにより、システムによってセッション ID が割り当てられます。

<?php
session_start();
?>

読み取りセッション

PHP の組み込み $_SESSION 変数は、設定されたセッション変数に簡単にアクセスできます。

<?php
// 检索 session 数据
echo "浏览量:". $_SESSION['views'];
?>

セッションを破棄する

 <?php
 //删除某些数据
 	session_start();
   if(isset($_SESSION['views']))
   {
    
    
       unset($_SESSION['views']);
   }
   //永久删除数据
    session_destroy();
    ?>

7. isset() は変数が存在するかどうかを検出します

PHP isset() は、1 つ以上の変数が設定されているかどうかを検出するために使用され、検出された変数が存在する場合は TRUE を返し、存在しない場合は FALSE を返します。
文法

bool isset( mixed var [, mixed var [, ...]] )

$var = 1;
if(isset($var)){
    
    
    echo '变量 $var 已经被设置';
} else {
    
    
    echo '变量 $var 还未被设置';
}

//结果
//变量 $var 已经被设置

知らせ

  • isset() は変数の検出にのみ使用でき、他のパラメータを渡すと解析エラーが発生します。
  • isset() は関数ではなく言語構造体であるため、変数関数から呼び出すことはできません。

8、phpフォーム

PHP では、フォーム情報を受け取るための $_POST 変数と $_GET 変数が事前定義されています。

HTMLフォームの検証

フォームを使用して顧客の入力情報を収集する場合、顧客が予想される入力に従って指定された内容に従うことを当然のことと考えないでください。顧客の入力は常に厳密にチェックされる必要があります。

<body>
<form name="commentform" method="post" action="comment.php">
<p>
称呼: <input type="text" name="nickname" />
</p>
<input type="submit" value="提 交" />
</form>
</body>

クライアント認証

クライアント側のフォーム検証は一般的に Javascript スクリプト検証に基づいており、この検証方法はサーバーの負荷を効果的に軽減し、入力エラーを顧客に即座に通知することもできます。

サーバー側の検証

場合によっては、クライアント側の認証に加えて、サーバー側の認証 (データベースへのアクセスなど) が必要になる場合があります。このとき、PHPプログラム内で論理検証を行う必要があります。サーバー側認証について

9. 認証コード

画像を作成する

$image = imagecreatetruecolor(,);

画像の色を作成する

$bg = imagecolorallocate(图片,R,G,B);
// RGB是0-255的取值

$bg = imagecolorallocate($image,255,255,255);
// 创建白色的背景

画像領域のパディング

imagefill(图片,x,y,颜色)

imagefill($image,0,0,$bgcolor);

コンテンツの生成

$data='abcdefghijkmnpqrstuvwxy3456789';
$f=substr($data,rand(0,strlen($data)),1);
从data中随机取出一个字符串

写真の上にキャラクターを描く

 imagestring(图片,字体大小,x,y,字符,字符颜色)

セッションストレージ

$_SESSION["code"] = $code;

完全なコード

//必须至于顶部,多服务器端记录验证码信息,便于用户输入后做校验
      session_start();
  
     //默认返回的是黑色的照片
     $image = imagecreatetruecolor(100, 30);
     //将背景设置为白色的
     $bgcolor = imagecolorallocate($image, 255, 255, 255);
     //将白色铺满地图
     imagefill($image, 0, 0, $bgcolor);
  
     //空字符串,每循环一次,追加到字符串后面  
     $captch_code='';
  
    //验证码为随机四个数字
     for ($i=0; $i < 4; $i++) {
    
     
         $fontsize=6;
         $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
         
         //产生随机数字0-9
         $fontcontent = rand(0,9);
         $captch_code.= $fontcontent;
        //数字的位置,0,0是左上角。不能重合显示不完全
         $x=($i*100/4)+rand(5,10);
         $y=rand(5,10);
          imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
     }
       
  
   
    $_SESSION['authcode'] = $captch_code;
 //为验证码增加干扰元素,控制好颜色,
 //点   
     for ($i=0; $i < 200; $i++) {
    
     
         $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
         imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
     }
  
 //为验证码增加干扰元素
 //线   
     for ($i=0; $i < 3; $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);
     }
  
     header('content-type:image/png');
     imagepng($image);
   
     //销毁
    imagedestroy($image);

おすすめ

転載: blog.csdn.net/pink_cz/article/details/120911951