ホームページ バックエンド開発 PHPチュートリアル PHP フォルダー トラバーサル、均等な比率での画像圧縮

PHP フォルダー トラバーサル、均等な比率での画像圧縮

Jul 25, 2016 am 08:42 AM

    /**
  1. *出典:インターネット
  2. */
  3. クラスイメージ
  4. {
  5. var $w_quality = 100; // 品質
  6. var $w_minwidth = 500; /最小幅
  7. var $w_minheight = 500; //最小高さ
  8. var $interlace = 0; //画像がインターレースかどうか
  9. var $fontfile; //デフォルトのウォーターマーク画像
  10. 関数__construct()
  11. {
  12. $this->fontfile = $_SERVER['DOCUMENT_ROOT'].'/public/fonts/simhei.ttf';
  13. $this->w_img = '';
  14. {
  15. $this->__construct();
  16. }
  17. function info($img)
  18. {
  19. $imageinfo = getimagesize($img); //画像情報配列 0=>幅ピクセル 1= >高ピクセル 2=> は画像タイプ マーク 3 => はテキスト文字列、内容は "height="yyy" width="xxx"、
  20. if($imageinfo === false) は false を返します
  21. $imagetype = strto lower(substr(image_type_to_extension($imageinfo[2]),1)); //画像ファイルの種類を取得します $imageinfo[2] は画像の種類のマークです
  22. $imagesize = filesize($img) / / 画像サイズ
  23. $info = array(
  24. 'width'=>$imageinfo[0],
  25. 'height'=>$imageinfo[1],
  26. 'type'=>$imagetype,
  27. 'size'= > ;$imagesize,
  28. 'mime'=>$imageinfo['mime']
  29. );
  30. return $info; }
  31. /**
  32. * 略図
  33. *
  34. * @param string $image
  35. * @param string $filename
  36. * @param int $maxwidth
  37. * @param int $maxheight
  38. * @param string $suffix
  39. * @param int $autocut
  40. * @戻り文字列
  41. */
  42. function subject($image, $filename = ' ' ,$maxwidth = 50, $maxheight = 50, $suffix='_thumb', $autocut = 0)
  43. {
  44. if( !$this->check($image)) return false;
  45. $info = $this; - >info($image); //画像情報を取得
  46. if($info === false) return false
  47. $srcwidth = $info['width'] //ソース画像の幅
  48. $srcheight = $info; [ 'height']; //ソース画像は高です
  49. $pathinfo = pathinfo($image);
  50. $type = $pathinfo['extension']; // 拡張子を取得します
  51. if(!$type) $type = $info[ 'type']; // 取得できない場合は $info['type'] を使用します
  52. $type = strto lower($type)
  53. $scale = min($maxwidth/$srcwidth); , $ maxheight/$srcheight); //サムネイルの比率を取得します
  54. //ソース画像に応じて比率を取得します
  55. $createwidth = $width = (int) ($srcwidth*$scale); //サムネイルの幅を取得します);
  56. $createheight = $height = (int)($srcheight*$scale);//(); //サムネイルの高さを取得します
  57. $psrc_x = $psrc_y = 0;
  58. if($autocut) //サムネイルの比率 取得するには
  59. {
  60. if($maxwidth/$maxheight<$srcwidth/$srcheight && $maxheight>=$height) //サムネイルがソース画像よりも比例して狭い場合
  61. {
  62. $width = $ maxheight/$height *$width; //幅は対応する比率に従って処理されます
  63. $height = $maxheight;// //高さは変更されません
  64. }
  65. elseif($maxwidth/$maxheight>$srcwidth/$srcheight && $maxwidth>=$width) // サムネイルがソース画像よりも比例して広い場合
  66. {
  67. $height = $maxwidth/$width*$height;//
  68. $width = $maxwidth
  69. }
  70. if($ maxwidth == '55') {
  71. $width = '55';
  72. $createwidth = '55' }
  73. if($maxwidth == '110'){
  74. $width = '110'; '110';
  75. }
  76. }
  77. if($srcwidth<='280' && $maxwidth != '110'){
  78. $createwidth = $srcwidth;
  79. $createfun = ' imagecreatefrom'.($type= ='jpg' ? 'jpeg' : $type); //さまざまな画像処理関数を検索します
  80. $srcimg = $createfun($image) //画像識別子を返します
  81. if($type ! = 'gif' && function_exists ('imagecreatetruecolor')){
  82. $thumbimg = imagecreatetruecolor($createwidth, $createheight); // 新しい True Color イメージを作成します
  83. }else{
  84. if($maxwidth == '110' && $srcheight >= $srcwidth){
  85. $height1 = 72;
  86. $thumbimg = imagecreate($width, $height1); // 新しいパレットベースの画像を作成します。
  87. }elseif ($maxwidth == '110' && $srcheight $width1 = 110;
  88. $thumbimg = imagecreate($width1, $height); // 新しいパレットベースの画像を作成します
  89. }else{
  90. $thumbimg = imagecreate($width, $height); // 新しいパレットベースの画像を作成します
  91. }
  92. }
  93. if(function_exists('imagecopyresampled')){ // 画像の一部をリサンプルしてコピーしますサイズを調整し、トゥルーカラー
  94. //imagecopyresampled(新しい画像, ソース画像, 新しい画像の左上隅からの x 距離, 新しい画像の左上隅からの y 距離, 新しい画像の左上隅からの x 距離ソース画像、ソース画像の左上隅からの y 距離、新しい画像の幅、新しい画像の高さ、ソース画像の幅、ソース画像の高さ)
  95. if($maxwidth == '110' && $srcheight >= $ srcwidth){
  96. $psrc_x = 0;
  97. $psrc_y = $psrc_yz;
  98. $width = '110' && $srcheight > = $srcwidth && $srcheight>= '72' && $srcwidth $psrc_yz = $height/2;
  99. $psrc_y = $psrc_yz; ';
  100. }
  101. if($maxheight == '72' && $srcheight <= $srcwidth && $srcheight<= '72' && $srcwidth >= '110'){
  102. $cha = ($maxheight-$ srcheight)/2;
  103. $psrc_y = -($cha);
  104. $height = '72';
  105. imagecopyresampled($thumbimg, $srcimg, 0) , 0, $psrc_x, $psrc_y, $width, $height, $srcwidth, $srcheight);
  106. }else{ //画像の一部をコピーしてサイズ変更、パレット
  107. imagecopyresize($thumbimg, $srcimg, 0, 0) , $psrc_x, $psrc_y, $width, $height, $srcwidth, $srcheight);
  108. }
  109. if($type=='gif' || $type=='png')
  110. {
  111. //imagecolorallocate は画像に色を設定します
  112. $background_color = imagecolorallocate($thumbimg, 0, 255, 0); // パレットに基づいて画像の背景色を塗りつぶし、緑を割り当てます
  113. // imagecolortransparent 色を透明色として定義します
  114. imagecolortransparent ($thumbimg, $background_color); // この行がコメントアウトされている場合は透明色に設定します 緑色の画像を出力します
  115. }
  116. // imageinterlace はインターレースを有効または無効にします
  117. if($type=='jpg' || $type =='jpeg') imageinterlace($thumbimg, $this->interlace);
  118. $ imagefun = 'image'.($type=='jpg' ? 'jpeg' : $type)
  119. //imagejpeg imagegif imagepng
  120. if(empty($filename)) $filename = substr($image, 0, strrpos( $image, '.')).$suffix.'.'.$type //ファイル名を取得します
  121. //aaa .gif aaa_thumb.gif
  122. $imagefun($thumbimg, $filename); // 新しい画像
  123. imagedestroy ($thumbimg); // ソース画像を破棄します
  124. return $filename;
  125. }
  126. /**
  127. * 幅または高さを制限します
  128. *
  129. * @param string $image
  130. * @param int $maxwidth
  131. * @param int $maxheight
  132. * @param string $suffix
  133. * @return string
  134. */
  135. function thread3($image,$maxwidth = 0, $maxheight = 0, $suffix='_thumb')
  136. {
  137. if( !$this->check($image) )) return false;
  138. $info = $this->info($image); // 画像情報を取得します
  139. if($info === false) return false; //ソース画像の幅
  140. $srcheight = $info['height']; //ソース画像の高さ
  141. $pathinfo = pathinfo($image)
  142. $type = $pathinfo['extension']; //拡張子を取得します。 if(!$type) $type = $info['type']; // 取得できない場合は、$info['type'] を使用します
  143. $type = strto lower($type)
  144. if ($maxwidth==0){
  145. $scale = $maxheight/$srcheight;
  146. if($scale $createwidth = $srcwidth*$scale;
  147. $createheight = $maxheight;
  148. $作成幅 = $srcwidth
  149. $作成高さ = $srcheight; }
  150. }
  151. if($maxheight==0){
  152. $scale = $maxwidth/$srcwidth;
  153. if($scale $createwidth = $maxwidth
  154. } else{
  155. $createwidth = $srcwidth;
  156. $createheight = $srcheight;
  157. }
  158. $psrc_x = $psrc_y = 0;
  159. $createfun = 'imagecreatefrom'.($type=='jpg' ? 'jpeg' : $type); //さまざまな画像処理関数を検索します
  160. $srcimg = $createfun($image); //画像識別子を返します
  161. if($type != 'gif' && function_exists('imagecreatetruecolor')){
  162. $thumbimg = imagecreatetruecolor($createwidth, $createheight); // 新しい True Color イメージを作成します
  163. }else{
  164. $thumbimg = imagecreate($createwidth, $createheight) // 新しいパレットベースのイメージを作成します
  165. }
  166. if( function_exists ('imagecopyresampled')){ //画像のコピー部分をリサンプルしてサイズ変更、トゥルーカラー
  167. //imagecopyresampled(新しい画像, ソース画像, 新しい画像の左上隅からの x 距離, 左上隅からの y 距離新しい画像の、ソース画像の左上隅の x 距離、ソース画像の左上隅からの y 距離、新しい画像の幅、新しい画像の高さ、ソース画像の幅、ソース画像の高さ)
  168. imagecopyresampled($thumbimg, $) srcimg, 0, 0, $psrc_x, $psrc_y, $createwidth, $createheight , $srcwidth, $srcheight);
  169. }else{ //画像の一部をコピーしてサイズ変更、パレット
  170. imagecopyresize($thumbimg, $srcimg, 0, 0, $psrc_x, $psrc_y, $createwidth, $createheight, $srcwidth, $srcheight);
  171. }
  172. if($type=='gif' || $type=='png')
  173. {
  174. // imagecolorallocate は画像に色を割り当てます
  175. $background_color = imagecolorallocate($thumbimg, 0, 255, 0) // パレットベースの画像の背景色を塗りつぶし、緑を割り当てます
  176. // imagecolortransparent は色を透明として定義します
  177. imagecolortransparent ($thumbimg, $background_color); // 透明な色に設定します。この行がコメントアウトされている場合、緑色の画像が出力されます
  178. }
  179. // imageinterlace はインターレースを有効または無効にします
  180. if($type=='jpg' || $type=='jpeg') imageinterlace($thumbimg, $this ->interlace);
  181. $imagefun = 'image'.($type=='jpg' ? 'jpeg' : $type); imagegif imagepng
  182. $filename = substr($image, 0, strrpos( $image, '.')).$suffix.'.'.$type; //ファイル名を取得します
  183. //aaa.gif aaa_thumb.gif
  184. $imagefun($thumbimg, $filename); //新しい画像
  185. imagedestroy ($thumbimg); // サムネイルを破棄します
  186. return $filename }
  187. /**
  188. * 元のサムネイルが特定のサイズを満たさない問題を解決するために、特定のサイズのサムネイルを生成します
  189. * @static
  190. * @access public
  191. * @param string $image 元画像
  192. * @param string $type 画像形式
  193. * @param string $thumbname サムネイルファイル名
  194. * @param string $maxWidth 幅
  195. * @param string $maxHeight height
  196. * @param boolean $interlace Enableインターレース
  197. * @return void
  198. */
  199. static functionthumb2($image, $thumbname, $type='', $maxWidth=200, $maxHeight=50, $interlace=true) {
  200. // 元の画像情報を取得します
  201. $info = Image ::getImageInfo($image);
  202. if ($info !== false ) {
  203. $srcWidth = $info['width'];
  204. $type = empty($) $info['type'] : $type;
  205. $interlace = $interlace ?
  206. $scale = max($maxWidth); / $srcWidth, $maxHeight / $srcHeight); // 拡大縮小率を計算します
  207. // 元の画像とサムネイルの比率を判断します。たとえば、元の画像がサムネイルよりも広い場合は両側をトリミングします。 ..
  208. if($maxWidth / $srcWidth > $maxHeight / $srcHeight){
  209. //
  210. $srcX = 0 より高い ;
  211. $srcY = ($srcHeight - $maxHeight / $scale) / 2 ; = $srcWidth;
  212. $cutHeight = $maxHeight / $scale;
  213. //
  214. $srcX = ($srcWidth - $maxWidth / $scale) / 2; $srcY = 0; $maxWidth / $scale;
  215. $cutHeight = $srcHeight; }
  216. // ダウンロード原図
  217. $createFun = 'ImageCreateFrom' . ($type == 'jpg' ? 'jpeg' : $type);
  218. $srcImg = $createFun($image);
  219. //创建缩略図
  220. if ($type != 'gif' && function_exists('imagecreatetruecolor'))
  221. $thumbImg = imagecreatetruecolor($maxWidth, $maxHeight);
  222. それ以外の場合
  223. $thumbImg = imagecreate($maxWidth, $maxHeight);
  224. // 复制图片
  225. if (function_exists("ImageCopyResampled"))
  226. imagecopyresampled($thumbImg, $srcImg, 0, 0, $srcX, $srcY, $maxWidth, $maxHeight, $cutWidth, $cutHeight);
  227. else
  228. imagecopyresize($thumbImg, $srcImg, 0, 0, $srcX, $srcY, $maxWidth, $maxHeight, $cutWidth, $cutHeight);
  229. if ('gif' == $type || 'png' == $type) {
  230. //imagealphablending($thumbImg, false);//取消默认の混色モード
  231. //imagesavealpha($thumbImg,true); //完全に保存されるアルファ パス情報を設定します
  232. $background_color = imagecolorallocate($thumbImg, 0, 255, 0); // 指派一个绿色
  233. imagecolortransparent($thumbImg, $background_color); // 設定は透明色、若注释掉実行色の絵
  234. }
  235. // jpeg 图形配置隔離行扫描
  236. if ('jpg' == $type || 'jpeg' == $type)
  237. imageinterlace($thumbImg, $interlace);
  238. // 画像を生成
  239. $imageFun = 'image' . ($type == 'jpg' ? 'jpeg' : $type);
  240. @chmod(ディレクトリ名($thumbname),0777);
  241. $imageFun($thumbImg, $thumbname);
  242. imagedestroy($thumbImg);
  243. imagedestroy($srcImg);
  244. $thumbname を返します;
  245. }
  246. false を返します。
  247. }
  248. /**
  249. * 画像情報を取得
  250. * @static
  251. * @access public
  252. * @param string $image 画像ファイル名
  253. * @returnmixed
  254. */
  255. 静的関数 getImageInfo($img) {
  256. $imageInfo = getimagesize($img);
  257. if ($imageInfo !== false) {
  258. $imageType = strto lower(substr(image_type_to_extension($imageInfo[2]), 1));
  259. $imageSize = ファイルサイズ($img);
  260. $info = array(
  261. "幅" => $imageInfo[0],
  262. "高さ" => $imageInfo[1],
  263. "タイプ" => $imageType,
  264. "サイズ" => $ imageSize,
  265. "mime" => $imageInfo['mime']
  266. );
  267. $info を返します。
  268. } else {
  269. false を返します。
  270. }
  271. }
  272. //watermark(源图, 生成文件, 生成位置,水印文件,水印文本,背景色)
  273. function Watermark($source, $target = '', $w_pos = 9, $w_img = ' ', $w_text = '', $w_font = 12, $w_color = '#cccccc',$x='',$y='')
  274. {
  275. if( !$this->check($source)) false を返します。
  276. if(!$target) $target = $source;
  277. if ($w_img == '' && $w_text == '')
  278. $w_img = $this->w_img;
  279. $source_info = getimagesize($source);
  280. $source_w = $source_info[0]; //获取宽
  281. $source_h = $source_info[1]; //获取高
  282. if($source_w < $this->w_minwidth || $source_h < $this->w_minheight) return false; //宽和高达不到達要求直接返還
  283. switch($source_info[2]) //新規建图片
  284. {
  285. case 1 :
  286. $source_img = imagecreatefromgif($source);
  287. 休憩;
  288. ケース 2 :
  289. $source_img = imagecreatefromjpeg($source);
  290. 休憩;
  291. ケース 3 :
  292. $source_img = imagecreatefrompng($source);
  293. 休憩;
  294. デフォルト:
  295. false を返します。
  296. }
  297. if(!empty($w_img) && file_exists($w_img)) //水印文件
  298. {
  299. $ifwaterimage = 1; //否か 水印图
  300. $water_info = getimagesize($w_img); //水印情報
  301. $width = $water_info[0];
  302. $height = $water_info[1];
  303. switch($water_info[2])
  304. {
  305. ケース 1 :
  306. $water_img = imagecreatefromgif($w_img);
  307. 休憩;
  308. ケース 2 :
  309. $water_img = imagecreatefromjpeg($w_img);
  310. 休憩;
  311. ケース 3 :
  312. $water_img = imagecreatefrompng($w_img);
  313. 休憩;
  314. デフォルト:
  315. リターン;
  316. }
  317. }
  318. else
  319. {
  320. $ifwaterimage = 0;
  321. //imagettfbbox この関数は、TrueType テキストのパケットを包含する仮想フレームの画素サイズを計算して返します。
  322. //imagettfbbox (フォント サイズ、フォント角度、フォント ファイル、ファイル)
  323. // echo $this->fontfile;
  324. $temp = imagettfbbox(ceil($w_font*1.6), 0, $this->fontfile, $w_text);//TrueType フォントを使用してテキストの範囲を取得します
  325. $width = $temp[4] - $temp[6] //右上隅の X 位置 - 左上隅の X 位置
  326. ; $height = $temp[3] - $temp[5]; //右下隅の Y 位置 - 右上隅の Y 位置
  327. unset($temp) }
  328. switch($w_pos)
  329. {
  330. case 0: / /ランダムな位置
  331. $wx = rand(0 ,($source_w - $width));
  332. $wy = rand(0,($source_h - $height));
  333. ケース 1: // 左上隅$wx = 25;
  334. $wy = 25;
  335. ケース 2: // 上部中央の位置
  336. $wy = 0; : // 右上隅
  337. $wx = $source_w - $width;
  338. $wy = 0;
  339. ケース 4: // 左側の中間位置
  340. $wx = 0; - $height) / 2;
  341. ケース 5: // 中間位置
  342. $wy = ($source_h - $height) / 2;ケース 6: // 中央の下の位置
  343. $wx = ($source_w - $width) / 2;
  344. $wy = $source_h - $height
  345. ケース 7: // 左下隅
  346. $wx = 0;
  347. $wy = $source_h - $height;
  348. ケース 8: // 右側の中央の位置
  349. $wy = ($source_h - $height) /2; ;
  350. ケース 9: //右下隅
  351. $wy = $source_h - $height ;
  352. デフォルト: // ランダム
  353. $wx = rand( - $width));
  354. $wy = rand(0,($source_h - $height ));
  355. case 10://カスタマイズされた位置
  356. $wy = $y; 11: //下中央の位置 -- 職人のみ
  357. $wy = $source_h - $height-50;
  358. Break; ifwaterimage) //ウォーターマーク画像がある場合
  359. {
  360. //imagecopymerge 画像をコピーしてマージします
  361. の一部 //パラメータ (ソース画像、ウォーターマーク画像、ソース画像の x 位置にコピー、ソース画像の y 位置にコピー、ウォーターマークから画像の x 位置、透かし画像からの y 位置、高さ、幅、透明度)
  362. //imagecopymerge( $source_img, $water_img, $wx, $wy, 0, 0, $width, $height, $this->w_pct) ;
  363. imagecopy($source_img,$water_img,$wx,$wy,0,0, $width,$height)
  364. }
  365. else
  366. {
  367. if(!empty($w_color) && (strlen($w_color)) ==7))
  368. {
  369. $r = hexdec(substr($w_color,1,2 )) //赤を取得します $g = hexdec(substr($w_color,3,2)); //緑を取得します$b = hexdec(substr($w_color,5)); //青を取得します
  370. }
  371. else
  372. {
  373. return;
  374. }
  375. //imagecolorallocate パレットに基づいて背景色を塗りつぶします
  376. //imagestring文字列を水平方向に 1 行
  377. //imagestring(ソース画像, フォント サイズ, 位置 X, 位置 Y, text , color)
  378. //パラメータ ($image, float $size, float $angle, int $x, int $y, int $color, string $fontfile, string $text)
  379. imagettftext($source_img,$w_font,0, $wx,$wy,imagecolorallocate($source_img,$r,$g,$b),$this->fontfile, $w_text);
  380. //imagestring($source_img,$w_font,$wx,$wy,$ w_text,imagecolorallocate($source_img,$r,$g,$b));
  381. //ファイルまたはブラウザに出力
  382. switch($source_info[2])
  383. {
  384. case 1 :
  385. imagegif($source_img, $target) // 画像をブラウザまたは GIF 形式でファイルに出力
  386. Break; ;
  387. ケース 2 :
  388. imagejpeg($source_img, $target, $this->w_quality); // 画像を JPEG 形式で出力します
  389. ケース 3 :
  390. imagepng($source_img, $target; ; if(isset($water_img))
  391. {
  392. imagedestroy($water_img); //
  393. unset($source_info)
  394. return true }
  395. ライブラリが存在する必要があります。 , 接尾辞は jpg|jpeg|gif|png、ファイルが存在する、imagecreatefromjpeg または imagecreatefromgif が存在する
  396. function check($image)
  397. {
  398. return extension_loaded('gd') &&
  399. preg_match("/.(JPG|JPEG) |PNG|GIF| jpg|jpeg|gif|png)/i", $image, $m) &&
  400. file_exists($image) &&
  401. function_exists('imagecreatefrom'.($m[1] == 'jpg' ? 'jpeg' : $ m[1]));
  402. //imagecreatefromjpeg
  403. //imagecreatefromgif
  404. //imagecreatefrompng }
  405. }
  406. /**
  407. サムネイル
  408. 1. imagecreatefromgif imagecreatefromjpeg imagecreatefrompng で新しい画像リソースを作成します
  409. 2.imagecopyresampled 画像をコピーしてサイズを変更します
  410. ウォーターマーク: 画像ウォーターマーク、テキストウォーターマーク
  411. 1. 画像を作成します
  412. 2. ウォーターマークを追加します
  413. 画像ウォーターマーク: imagecopymerge 2 を入れます画像を結合します
  414. テキストの透かし: imagettftext 画像にテキストを書き込みます
  415. */
  416. error_reporting(0); __FILE__);
  417. $ filesnames = scandir($hostdir.'/desktop');
  418. $img = new image();
  419. if($name != '.' && $name != '.. '){
  420. $imgPath = $hostdir.'/desktop/';
  421. $imgsize = getimagesize($imgPath.$name);
  422. $imgInfo =explode('.',$name); imginfo2 =explode(' _',$imgInfo[0]);
  423. if($imginfo2[count($imginfo2)-1] != 'small'){
  424. $img_small = $imgPath.$imgInfo[0].' _small.'.$ imgInfo[1];
  425. $img->thumb2($imgPath.$name,$img_small,'',$imgsize[0]/4,$imgsize[1]/4); }
  426. }
  427. コードをコピー
  428. 等しい比率、PHP
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

See all articles