例: PHP を使用して FTP ユーザーのオンライン管理を実装する

WBOY
リリース: 2016-06-21 09:00:39
オリジナル
1228 人が閲覧しました

  领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。

  实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP上传账号并创建该用户的相应目录。

  FTP服务器是系统默认带的,采用系统用户的用户名和密码,创建系统用户就等于创建FTP用户,FreeBSD是属于UNIX阵营的操作系统,它没有象Linux一样的useradd和groupadd等创建用户和组的命令,其取而代之的是pw命令加上相应参数来实现,在Freebsd上以管理员的身份创建一个用户的命令是

  echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]

  参数g指定用户组,参数s指定用户的shell。

  如果是普通用户登陆的话还必须用到su命令,调用的方法是

  su root –c ‘echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] ’

  执行之后系统会要求输入管理员密码,输入密码就可以以管理员的身份执行这个命令了。

  实现这步操作的主要难点在于如何通过PHP来调用上面这些系统命令去创建一个用户,本例是使用PHP中的popen()函数来实现的,该函数执行指令打开文件,语法是int popen(string command, string mode),其打开的文件只能是单向的,只能读或只能写,对应的“string mode”为’r’或’w’,“string command” 就是命令字符串,在对文件的操作上可使用 fgets()、fgetss()与fputs()函数,本例用fputs()函数往文件里面输入管理员密码。若是开档发生错误将返回 false 值,最后函数要记得调用pclose()关闭。

  下面我们来规划一下FTP用户的组,事先我们先用pw groupadd ftpuser创建ftpuse组,让在线申请的用户为这个组的成员。为了安全起见,我们不应该给FTP用户Telnet权限,所以我们还要专门给他们创建一个shell,使得他们不能通过Telnet正常登陆系统,方法如下:先创建一个文件/bin/ftponly

  #!/bin/csh
  /bin/cat << XX
  You can ony use this username to login ftp server!
  And you can not use it to telnet to this system! XX
  sleep 10

  该文件中XX之间就是显示给用telnet登陆的用户看的信息。信息显示10秒钟就自动退出了。最后不要忘记用chmod +x /bin/ftponly给这个文件可执行属性。

  然后在/bin/shell文件中添加“/bin/ftponly”,在以后的命令里面我们就可以利用pw中-s参数把这个shell指定给FTP用户了。

  最后还要注意一个问题,su命令仅仅是wheel管理组的用户成员才可以使用,当PHP调用su命令的时候也必须以wheel组成员的身份运行,否则系统拒绝运行,而PHP运行系统命令的身份就是Apache web服务器运行的身份,初始的用户名和用户组都是nobody,所以先得建立一个wheel组的用户www供apache使用,接着更改Apache的配置文件httpd.conf中的user为www,group为wheel,重新启动Apache,就可以以新用户身份运行了。

  下面可以创建PHP源文件checkin.php了,代码如下:

{ $rootpasswd="adminpassword";ユーザーパスワード
$creatuser="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly -g ftpuser –s /bin/ftponly -h 0' "; //これは、su および pw コマンドを使用してユーザーを作成するために使用される文字列です
$fp=popen($creatuser,"w"); //popen() 関数を呼び出してコマンドを実行します文字列、$fp へのファイル ハンドルを返します
fputs($fp,$rootpasswd); //管理者パスワードをファイル $fp に書き込みます。これはシステムにパスワードを入力するのと同じです
pclose($) fp);//ファイルを閉じます
$creatdir="su --login root -c 'mkdir /home/".$username."'";//ユーザー ディレクトリを作成するコマンド文字列
$fp= Popen($creatdir,"w ");//ユーザーディレクトリを作成するコマンドを実行します
fputs($fp,$rootpasswd) //管理者パスワードを入力します
pclose($fp); $creatdir="su --login root - c 'mkdir /home/".$username."/public_html'";
$fp=popen($creatdir,"w"); //作成するコマンドを実行します。ユーザー Web サイトのルート ディレクトリ
fputs($fp, $rootpasswd); //管理者パスワードを入力します
pclose($fp);
$creatdir="su --login root -c 'chown "。 $username." /home/".$username." '"; //ユーザー ディレクトリの所有者をユーザー自身に変更します。最初は Apache を実行するユーザー www に変更します。
$fp=popen($creatdir,"w"); //コマンドを実行します
fputs($fp,$rootpasswd) //管理者パスワードを入力します
pclose($fp); > $creatdir="su --login root -c 'chown ".$username." /home/".$username."/public_html'" //Web サイトのルート ディレクトリの所有権を変更します
$fp= Popen($ creatdir,"w");
fputs($fp,$rootpasswd);
echo "Congratulations".$username.", あなたの FTP アカウント アプリケーションは成功しました! FTP にログインしてください。Telnet 権限がないことに注意してください。";}
else{?>


FTP アカウント用< /title> <br> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <br></head> ="#FFFFFF "> <br><div align="center"> <br><p>FTP アカウントを申請</p> <br><form method=POST action="< echo $PHP_SELF; ?>"> <br><table width="36%" border="0"> <br><tr> <br><td width="40%"> <br><div align="right">アカウント名:</div> <br><td width="60%"> ="テキスト" 名前="ユーザー名"> <br><tr> <br><td幅="40%"> ><div align="right">パスワード:</div> <br><td width="60%"> " name=" userpasswd"> <br></td> <br></tr> <br><tr> <br><tdcolspan="2"><input type=" submit" name= "Submit" value="アプリケーション"></td> <br></tr> <br></table> <br></form> <br></div> ;<? }?> <br></html> <br> <br> <br> <br> <br><br></p> </div> </div> <div style="height: 25px;"> <div class="wzconBq" style="display: inline-flex;"> <span>関連ラベル:</span> <div class="wzcbqd"> <a onclick="hits_log(2,'www',this);" href-data="http://www.php.cn/ja/search?word=gt" target="_blank">gt</a> <a onclick="hits_log(2,'www',this);" href-data="http://www.php.cn/ja/search?word=lt" target="_blank">lt</a> <a onclick="hits_log(2,'www',this);" href-data="http://www.php.cn/ja/search?word=nbsp" target="_blank">nbsp</a> </div> </div> <div style="display: inline-flex;float: right; color:#333333;">ソース:php.cn</div> </div> <div class="wzconOtherwz"> <a href="http://www.php.cn/ja/faq/238131.html" title="PHP はデータベースを使用してセッションを保存します"> <span>前の記事:PHP はデータベースを使用してセッションを保存します</span> </a> <a href="http://www.php.cn/ja/faq/238135.html" title="基礎知識: php4 と php5 の違い"> <span>次の記事:基礎知識: php4 と php5 の違い</span> </a> </div> <div class="wzconShengming"> <div class="bzsmdiv">このウェブサイトの声明</div> <div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div> </div> <div class="wwads-cn wwads-horizontal" data-id="156" style="max-width:955px"></div> <div class="wzconZzwz"> <div class="wzconZzwztitle">著者別の最新記事</div> <ul> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612210.html">BlackRock Labels BTC a Unique Diversifier</a> </div> <div>2024-09-20 15:51:33</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612202.html">Internet Computer (ICP) Price Prediction: Will ICP Price Hit $24?</a> </div> <div>2024-09-20 15:47:32</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612197.html">Worldcoin (WLD) Price Prediction 2022-23</a> </div> <div>2024-09-20 15:45:32</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612185.html">今日投資すべきトップミームコイン</a> </div> <div>2024-09-20 15:39:32</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612183.html">Floki (FLOKI) 価格予測: 刷新されたマーケティングは Floki が 10 月の利益を取り戻すのに役立ちますか?</a> </div> <div>2024-09-20 15:38:32</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612161.html">Next Cryptocurrency to Explode: 5 Coins to Add to Your Watchlist</a> </div> <div>2024-09-20 15:27:32</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612159.html">Dogecoin: From an Internet Meme to a Digital Currency with a Billion-Dollar Market Capitalization</a> </div> <div>2024-09-20 15:26:32</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612129.html">ZChains Unveils a Series of Exciting Updates and Launches to Enhance Its Ecosystem</a> </div> <div>2024-09-20 15:12:32</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612099.html">Apple 版の Little Fox Payment Platform をダウンロードする方法</a> </div> <div>2024-09-20 14:53:01</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ja/faq/1796612097.html">初心者がMetaMaskで取引する方法とその利点と欠点</a> </div> <div>2024-09-20 14:51:01</div> </li> </ul> </div> <div class="wzconZzwz"> <div class="wzconZzwztitle">最新の問題</div> <div class="wdsyContent"> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ja/wenda/172299.html" target="_blank" title="個別の HTML 要素に分割されたテキスト行のフォント間隔を保持します。" class="wdcdcTitle">個別の HTML 要素に分割されたテキスト行のフォント間隔を保持します。</a> <a href="http://www.php.cn/ja/wenda/172299.html" class="wdcdcCons">私は単語を個別の HTML 要素に分割し、アニメーションを介して個別に配置できるようにするという一般的な手法を再作成しようとしています。私が抱えている問題は、単語が別々の要素に分割...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> から 2023-09-10 18:37:01</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>301</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ja/wenda/170230.html" target="_blank" title="これを自動的に複数行にする方法" class="wdcdcTitle">これを自動的に複数行にする方法</a> <a href="http://www.php.cn/ja/wenda/170230.html" class="wdcdcCons">これを自動的にマルチラインにする方法HTMLとCSSを使用しているのは私のコードです(コードの一部がPHPからのものであるため、わずかに変更しました):name&nbsp-&nbs...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> から 2023-08-18 00:10:50</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>329</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ja/wenda/169731.html" target="_blank" title="私のコンソールではなぜ間違っているのでしょうか?" class="wdcdcTitle">私のコンソールではなぜ間違っているのでしょうか?</a> <a href="http://www.php.cn/ja/wenda/169731.html" class="wdcdcCons">if (time<8) { x="zao";}else{ x="good";}どの問題</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> から 2023-08-03 14:42:30</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>0</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>99</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ja/wenda/169410.html" target="_blank" title="これは conn.php のコードですか?" class="wdcdcTitle">これは conn.php のコードですか?</a> <a href="http://www.php.cn/ja/wenda/169410.html" class="wdcdcCons">以下<?php $name = $_POST['username']; $pwd = md5($_POST['パスワード']); $sql = "select * ...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> から 2023-06-08 18:46:23</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>143</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ja/wenda/169357.html" target="_blank" title="COMPOSER をダウンロードして TP6 をインストールした後、図に示すように、常にインストールに失敗します。" class="wdcdcTitle">COMPOSER をダウンロードして TP6 をインストールした後、図に示すように、常にインストールに失敗します。</a> <a href="http://www.php.cn/ja/wenda/169357.html" class="wdcdcCons">COMPOSER をダウンロードして TP6 をインストールした後、図に示すように、常にインストールに失敗します。</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> から 2023-04-01 22:49:35</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>0</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>632</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> </div> </div> <div class="wzconZt" > <div class="wzczt-title"> <div>関連トピック</div> <a href="http://www.php.cn/ja/faq/zt" target="_blank">詳細> </a> </div> <div class="wzcttlist"> <ul> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ja/faq/bqsdcxssmys"><img src="https://img.php.cn/upload/subject/202407/22/2024072213263466698.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="通貨サークルにおけるCXとは何を意味しますか?" /> </a> <a target="_blank" href="http://www.php.cn/ja/faq/bqsdcxssmys" class="title-a-spanl" title="通貨サークルにおけるCXとは何を意味しますか?"><span>通貨サークルにおけるCXとは何を意味しますか?</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ja/faq/mysqlrediszmb"><img src="https://img.php.cn/upload/subject/202407/22/2024072212135758111.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="mysql と redis は二重書き込みの一貫性をどのように確保しますか?" /> </a> <a target="_blank" href="http://www.php.cn/ja/faq/mysqlrediszmb" class="title-a-spanl" title="mysql と redis は二重書き込みの一貫性をどのように確保しますか?"><span>mysql と redis は二重書き込みの一貫性をどのように確保しますか?</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ja/faq/cyplzhgs"><img src="https://img.php.cn/upload/subject/202407/22/2024072213553479455.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="一般的に使用される順列と組み合わせの公式" /> </a> <a target="_blank" href="http://www.php.cn/ja/faq/cyplzhgs" class="title-a-spanl" title="一般的に使用される順列と組み合わせの公式"><span>一般的に使用される順列と組み合わせの公式</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ja/faq/cdbdssmys"><img src="https://img.php.cn/upload/subject/202407/22/2024072214155159713.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="C面とB面ってどういう意味ですか?" /> </a> <a target="_blank" href="http://www.php.cn/ja/faq/cdbdssmys" class="title-a-spanl" title="C面とB面ってどういう意味ですか?"><span>C面とB面ってどういう意味ですか?</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ja/faq/zxshelljbdff"><img src="https://img.php.cn/upload/subject/202407/22/2024072214055546737.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="シェルスクリプトの実行方法" /> </a> <a target="_blank" href="http://www.php.cn/ja/faq/zxshelljbdff" class="title-a-spanl" title="シェルスクリプトの実行方法"><span>シェルスクリプトの実行方法</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ja/faq/oraclezinstrh"><img src="https://img.php.cn/upload/subject/202407/22/2024072213393956995.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="Oracleでのinstr関数の使用法" /> </a> <a target="_blank" href="http://www.php.cn/ja/faq/oraclezinstrh" class="title-a-spanl" title="Oracleでのinstr関数の使用法"><span>Oracleでのinstr関数の使用法</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ja/faq/winwsmjhsb"><img src="https://img.php.cn/upload/subject/202407/22/2024072213492370258.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="win10のアクティベーションが失敗するのはなぜですか?" /> </a> <a target="_blank" href="http://www.php.cn/ja/faq/winwsmjhsb" class="title-a-spanl" title="win10のアクティベーションが失敗するのはなぜですか?"><span>win10のアクティベーションが失敗するのはなぜですか?</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ja/faq/xgzcbzmg"><img src="https://img.php.cn/upload/subject/202407/22/2024072213373657897.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="レジストリを変更する方法" /> </a> <a target="_blank" href="http://www.php.cn/ja/faq/xgzcbzmg" class="title-a-spanl" title="レジストリを変更する方法"><span>レジストリを変更する方法</span> </a> </li> </ul> </div> </div> </div> </div> <div class="phpwzright"> <div class="wzrOne"> <div class="wzroTitle">人気のおすすめ</div> <div class="wzroList"> <ul> </ul> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="wzrThree"> <div class="wzrthree-title"> <div>人気のチュートリアル</div> <a target="_blank" href="http://www.php.cn/ja/course.html">詳細> </a> </div> <div class="wzrthreelist swiper2"> <div class="wzrthreeTab swiper-wrapper"> <div class="check tabdiv swiper-slide" data-id="one">関連するチュートリアル <div></div></div> <div class="tabdiv swiper-slide" data-id="two">人気のおすすめ<div></div></div> <div class="tabdiv swiper-slide" data-id="three">最新のコース<div></div></div> </div> <ul class="one"> <li> <a target="_blank" href="http://www.php.cn/ja/course/812.html" title="最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg" alt="最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)"/> </a> <div class="wzrthree-right"> <a target="_blank" title="最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)" href="http://www.php.cn/ja/course/812.html">最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)</a> <div class="wzrthreerb"> <div>1403058 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="812"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/74.html" title="PHP 入門チュートリアル 1: 1 週間で PHP を学ぶ" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/6253d1e28ef5c345.png" alt="PHP 入門チュートリアル 1: 1 週間で PHP を学ぶ"/> </a> <div class="wzrthree-right"> <a target="_blank" title="PHP 入門チュートリアル 1: 1 週間で PHP を学ぶ" href="http://www.php.cn/ja/course/74.html">PHP 入門チュートリアル 1: 1 週間で PHP を学ぶ</a> <div class="wzrthreerb"> <div>4230850 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="74"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/286.html" title="JAVA 初心者向けビデオチュートリアル" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a2bacfd9379.png" alt="JAVA 初心者向けビデオチュートリアル"/> </a> <div class="wzrthree-right"> <a target="_blank" title="JAVA 初心者向けビデオチュートリアル" href="http://www.php.cn/ja/course/286.html">JAVA 初心者向けビデオチュートリアル</a> <div class="wzrthreerb"> <div>2418281 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="286"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/504.html" title="Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a67ce3a6655.png" alt="Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル" href="http://www.php.cn/ja/course/504.html">Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル</a> <div class="wzrthreerb"> <div>498144 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="504"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/2.html" title="PHP ゼロベースの入門チュートリアル" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/6253de27bc161468.png" alt="PHP ゼロベースの入門チュートリアル"/> </a> <div class="wzrthree-right"> <a target="_blank" title="PHP ゼロベースの入門チュートリアル" href="http://www.php.cn/ja/course/2.html">PHP ゼロベースの入門チュートリアル</a> <div class="wzrthreerb"> <div>833967 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="2"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> <ul class="two" style="display: none;"> <li> <a target="_blank" href="http://www.php.cn/ja/course/812.html" title="最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg" alt="最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)"/> </a> <div class="wzrthree-right"> <a target="_blank" title="最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)" href="http://www.php.cn/ja/course/812.html">最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)</a> <div class="wzrthreerb"> <div >1403058 回の学習</div> <div class="courseICollection" data-id="812"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/286.html" title="JAVA 初心者向けビデオチュートリアル" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a2bacfd9379.png" alt="JAVA 初心者向けビデオチュートリアル"/> </a> <div class="wzrthree-right"> <a target="_blank" title="JAVA 初心者向けビデオチュートリアル" href="http://www.php.cn/ja/course/286.html">JAVA 初心者向けビデオチュートリアル</a> <div class="wzrthreerb"> <div >2418281 回の学習</div> <div class="courseICollection" data-id="286"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/504.html" title="Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a67ce3a6655.png" alt="Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル" href="http://www.php.cn/ja/course/504.html">Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル</a> <div class="wzrthreerb"> <div >498144 回の学習</div> <div class="courseICollection" data-id="504"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/901.html" title="Web フロントエンド開発の簡単な紹介" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/64be28a53a4f6310.png" alt="Web フロントエンド開発の簡単な紹介"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Web フロントエンド開発の簡単な紹介" href="http://www.php.cn/ja/course/901.html">Web フロントエンド開発の簡単な紹介</a> <div class="wzrthreerb"> <div >214170 回の学習</div> <div class="courseICollection" data-id="901"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/234.html" title="PSビデオチュートリアルをゼロからマスターする" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62611f57ed0d4840.jpg" alt="PSビデオチュートリアルをゼロからマスターする"/> </a> <div class="wzrthree-right"> <a target="_blank" title="PSビデオチュートリアルをゼロからマスターする" href="http://www.php.cn/ja/course/234.html">PSビデオチュートリアルをゼロからマスターする</a> <div class="wzrthreerb"> <div >858870 回の学習</div> <div class="courseICollection" data-id="234"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> <ul class="three" style="display: none;"> <li> <a target="_blank" href="http://www.php.cn/ja/course/1648.html" title="[Web フロントエンド] Node.js クイック スタート" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662b5d34ba7c0227.png" alt="[Web フロントエンド] Node.js クイック スタート"/> </a> <div class="wzrthree-right"> <a target="_blank" title="[Web フロントエンド] Node.js クイック スタート" href="http://www.php.cn/ja/course/1648.html">[Web フロントエンド] Node.js クイック スタート</a> <div class="wzrthreerb"> <div >4671 回の学習</div> <div class="courseICollection" data-id="1648"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/1647.html" title="海外のWeb開発フルスタックコースの完全なコレクション" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/6628cc96e310c937.png" alt="海外のWeb開発フルスタックコースの完全なコレクション"/> </a> <div class="wzrthree-right"> <a target="_blank" title="海外のWeb開発フルスタックコースの完全なコレクション" href="http://www.php.cn/ja/course/1647.html">海外のWeb開発フルスタックコースの完全なコレクション</a> <div class="wzrthreerb"> <div >3620 回の学習</div> <div class="courseICollection" data-id="1647"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/1646.html" title="Go言語実践GraphQL" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662221173504a436.png" alt="Go言語実践GraphQL"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Go言語実践GraphQL" href="http://www.php.cn/ja/course/1646.html">Go言語実践GraphQL</a> <div class="wzrthreerb"> <div >3109 回の学習</div> <div class="courseICollection" data-id="1646"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/1645.html" title="550W ファンマスターが JavaScript をゼロから段階的に学習します" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662077e163124646.png" alt="550W ファンマスターが JavaScript をゼロから段階的に学習します"/> </a> <div class="wzrthree-right"> <a target="_blank" title="550W ファンマスターが JavaScript をゼロから段階的に学習します" href="http://www.php.cn/ja/course/1645.html">550W ファンマスターが JavaScript をゼロから段階的に学習します</a> <div class="wzrthreerb"> <div >559 回の学習</div> <div class="courseICollection" data-id="1645"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ja/course/1644.html" title="Python マスター Mosh、基礎知識ゼロの初心者でも 6 時間で始められる" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/6616418ca80b8916.png" alt="Python マスター Mosh、基礎知識ゼロの初心者でも 6 時間で始められる"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Python マスター Mosh、基礎知識ゼロの初心者でも 6 時間で始められる" href="http://www.php.cn/ja/course/1644.html">Python マスター Mosh、基礎知識ゼロの初心者でも 6 時間で始められる</a> <div class="wzrthreerb"> <div >16077 回の学習</div> <div class="courseICollection" data-id="1644"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> </div> <script> var mySwiper = new Swiper('.swiper2', { autoplay: false,//可选选项,自动滑动 slidesPerView : 'auto', }) $('.wzrthreeTab>div').click(function(e){ $('.wzrthreeTab>div').removeClass('check') $(this).addClass('check') $('.wzrthreelist>ul').css('display','none') $('.'+e.currentTarget.dataset.id).show() }) </script> </div> <div class="wzrFour"> <div class="wzrfour-title"> <div>最新のダウンロード</div> <a href="http://www.php.cn/ja/xiazai">詳細> </a> </div> <script> $(document).ready(function(){ var sjyx_banSwiper = new Swiper(".sjyx_banSwiperwz",{ speed:1000, autoplay:{ delay:3500, disableOnInteraction: false, }, pagination:{ el:'.sjyx_banSwiperwz .swiper-pagination', clickable :false, }, loop:true }) }) </script> <div class="wzrfourList swiper3"> <div class="wzrfourlTab swiper-wrapper"> <div class="check swiper-slide" data-id="onef">ウェブエフェクト <div></div></div> <div class="swiper-slide" data-id="twof">公式サイト<div></div></div> <div class="swiper-slide" data-id="threef">サイト素材<div></div></div> <div class="swiper-slide" data-id="fourf">フロントエンドテンプレート<div></div></div> </div> <ul class="onef"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="jQuery エンタープライズ メッセージ フォームの連絡先コード" href="http://www.php.cn/ja/xiazai/js/8071">[フォームボタン] jQuery エンタープライズ メッセージ フォームの連絡先コード</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="HTML5 MP3 オルゴール再生効果" href="http://www.php.cn/ja/xiazai/js/8070">[プレイヤーの特殊効果] HTML5 MP3 オルゴール再生効果</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="HTML5 クールなパーティクル アニメーション ナビゲーション メニューの特殊効果" href="http://www.php.cn/ja/xiazai/js/8069">[メニューナビゲーション] HTML5 クールなパーティクル アニメーション ナビゲーション メニューの特殊効果</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="jQuery ビジュアル フォームのドラッグ アンド ドロップ編集コード" href="http://www.php.cn/ja/xiazai/js/8068">[フォームボタン] jQuery ビジュアル フォームのドラッグ アンド ドロップ編集コード</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="VUE.JS 模倣 Kugou 音楽プレーヤー コード" href="http://www.php.cn/ja/xiazai/js/8067">[プレイヤーの特殊効果] VUE.JS 模倣 Kugou 音楽プレーヤー コード</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="古典的な HTML5 プッシュ ボックス ゲーム" href="http://www.php.cn/ja/xiazai/js/8066">[html5特殊効果] 古典的な HTML5 プッシュ ボックス ゲーム</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="画像効果を追加または削減するための jQuery スクロール" href="http://www.php.cn/ja/xiazai/js/8065">[画像の特殊効果] 画像効果を追加または削減するための jQuery スクロール</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="CSS3 個人アルバム カバー ホバー ズーム効果" href="http://www.php.cn/ja/xiazai/js/8064">[フォトアルバム効果] CSS3 個人アルバム カバー ホバー ズーム効果</a> </div> </li> </ul> <ul class="twof" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8328" title="室内装飾クリーニングおよび修理サービス会社のウェブサイトのテンプレート" target="_blank">[フロントエンドテンプレート] 室内装飾クリーニングおよび修理サービス会社のウェブサイトのテンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8327" title="フレッシュカラーの個人履歴書ガイドページテンプレート" target="_blank">[フロントエンドテンプレート] フレッシュカラーの個人履歴書ガイドページテンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8326" title="デザイナーのクリエイティブな仕事の履歴書 Web テンプレート" target="_blank">[フロントエンドテンプレート] デザイナーのクリエイティブな仕事の履歴書 Web テンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8325" title="現代のエンジニアリング建設会社のウェブサイトのテンプレート" target="_blank">[フロントエンドテンプレート] 現代のエンジニアリング建設会社のウェブサイトのテンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8324" title="教育サービス機関向けのレスポンシブ HTML5 テンプレート" target="_blank">[フロントエンドテンプレート] 教育サービス機関向けのレスポンシブ HTML5 テンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8323" title="オンライン電子書籍ストア モールのウェブサイト テンプレート" target="_blank">[フロントエンドテンプレート] オンライン電子書籍ストア モールのウェブサイト テンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8322" title="IT テクノロジーがインターネット企業の Web サイト テンプレートを解決します" target="_blank">[フロントエンドテンプレート] IT テクノロジーがインターネット企業の Web サイト テンプレートを解決します</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8321" title="パープルスタイル外国為替取引サービスウェブサイトテンプレート" target="_blank">[フロントエンドテンプレート] パープルスタイル外国為替取引サービスウェブサイトテンプレート</a> </div> </li> </ul> <ul class="threef" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/sucai/3078" target="_blank" title="かわいい夏の要素のベクター素材 (EPS+PNG)">[PNG素材] かわいい夏の要素のベクター素材 (EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/sucai/3077" target="_blank" title="4 つの赤い 2023 卒業バッジ ベクター素材 (AI+EPS+PNG)">[PNG素材] 4 つの赤い 2023 卒業バッジ ベクター素材 (AI+EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/sucai/3076" target="_blank" title="歌う鳥と花がいっぱいのカートデザイン春のバナーベクター素材(AI+EPS)">[バナー画像] 歌う鳥と花がいっぱいのカートデザイン春のバナーベクター素材(AI+EPS)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/sucai/3075" target="_blank" title="金色の卒業帽ベクター素材(EPS+PNG)">[PNG素材] 金色の卒業帽ベクター素材(EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/sucai/3074" target="_blank" title="黒と白のスタイルの山アイコン ベクター素材 (EPS+PNG)">[PNG素材] 黒と白のスタイルの山アイコン ベクター素材 (EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/sucai/3073" target="_blank" title="異なる色のマントと異なるポーズを持つスーパーヒーローのシルエットベクター素材(EPS+PNG)">[PNG素材] 異なる色のマントと異なるポーズを持つスーパーヒーローのシルエットベクター素材(EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/sucai/3072" target="_blank" title="フラット スタイルの植樹祭バナー ベクター素材 (AI+EPS)">[バナー画像] フラット スタイルの植樹祭バナー ベクター素材 (AI+EPS)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/sucai/3071" target="_blank" title="9つのコミックスタイルの爆発するチャットバブルベクター素材(EPS+PNG)">[PNG素材] 9つのコミックスタイルの爆発するチャットバブルベクター素材(EPS+PNG)</a> </div> </li> </ul> <ul class="fourf" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8328" target="_blank" title="室内装飾クリーニングおよび修理サービス会社のウェブサイトのテンプレート">[フロントエンドテンプレート] 室内装飾クリーニングおよび修理サービス会社のウェブサイトのテンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8327" target="_blank" title="フレッシュカラーの個人履歴書ガイドページテンプレート">[フロントエンドテンプレート] フレッシュカラーの個人履歴書ガイドページテンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8326" target="_blank" title="デザイナーのクリエイティブな仕事の履歴書 Web テンプレート">[フロントエンドテンプレート] デザイナーのクリエイティブな仕事の履歴書 Web テンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8325" target="_blank" title="現代のエンジニアリング建設会社のウェブサイトのテンプレート">[フロントエンドテンプレート] 現代のエンジニアリング建設会社のウェブサイトのテンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8324" target="_blank" title="教育サービス機関向けのレスポンシブ HTML5 テンプレート">[フロントエンドテンプレート] 教育サービス機関向けのレスポンシブ HTML5 テンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8323" target="_blank" title="オンライン電子書籍ストア モールのウェブサイト テンプレート">[フロントエンドテンプレート] オンライン電子書籍ストア モールのウェブサイト テンプレート</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8322" target="_blank" title="IT テクノロジーがインターネット企業の Web サイト テンプレートを解決します">[フロントエンドテンプレート] IT テクノロジーがインターネット企業の Web サイト テンプレートを解決します</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ja/xiazai/code/8321" target="_blank" title="パープルスタイル外国為替取引サービスウェブサイトテンプレート">[フロントエンドテンプレート] パープルスタイル外国為替取引サービスウェブサイトテンプレート</a> </div> </li> </ul> </div> <script> var mySwiper = new Swiper('.swiper3', { autoplay: false,//可选选项,自动滑动 slidesPerView : 'auto', }) $('.wzrfourlTab>div').click(function(e){ $('.wzrfourlTab>div').removeClass('check') $(this).addClass('check') $('.wzrfourList>ul').css('display','none') $('.'+e.currentTarget.dataset.id).show() }) </script> </div> </div> </div> <div class="phpFoot"> <div class="phpFootIn"> <div class="phpFootCont"> <div class="phpFootLeft"> <dl> <dt> <a href="http://www.php.cn/ja/about/us.html" rel="nofollow" target="_blank" title="私たちについて" class="cBlack">私たちについて</a> <a href="http://www.php.cn/ja/about/disclaimer.html" rel="nofollow" target="_blank" title="免責事項" class="cBlack">免責事項</a> <a href="http://www.php.cn/ja/update/article_0_1.html" target="_blank" title="Sitemap" class="cBlack">Sitemap</a> <div class="clear"></div> </dt> <dd class="cont1">PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</dd> </dl> </div> </div> </div> </div> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1726926623"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all'/> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> </body> </html>