PhpStorm 2016.3版本釋出了!


PhpStorm是目前PHP開發工具中最強也最完整的一套,11/24推出2016.3的正式版本了!

  • 工具和框架:在遠程解釋程序中支持 Docker、支持 PHPSpec 測試框架、自動檢測和配置 PHPUnit、Behat 和 composer.json 內的 PHPSpec、在一個框架中打開多個項目,以及支持 Codeigniter 代碼風格。
  • 新的編輯體驗:語意突顯變量和參數、無需函數和 var 關鍵字即可完成重載方法和屬性,以及改進對 PSR-0/PSR-4 的支持。
  • 代碼質量分析:項目範圍的 PHP 7 嚴格類型、新的命名約定檢查,並改進運行時錯誤預防。

該版本還對頂尖 web 技術的支持進行了重大改進,如:支持流(flow)、改進對 TypeScript 的支持、支持 PostCSS、Stylelint 等。

原始連結: https://blog.jetbrains.com/phpstorm/2016/11/phpstorm-2016-3-is-now-released/

下載: https://www.jetbrains.com/phpstorm/download/#section=windows-versionphpstorm_debugging2x

Laravel 5.3 連接 SQL Server

一、下載 https://github.com/superlevin/xamppforlaravel

二、config/database.ph的connections增加
[php]
‘sqlsrv’ => [
‘driver’ => ‘sqlsrv’,
‘host’ => env(‘DB_HOST’, ‘localhost’),
‘database’ => env(‘DB_DATABASE’, ‘dbname’),
‘username’ => env(‘DB_USERNAME’, ‘dbuser’),
‘password’ => env(‘DB_PASSWORD’, ‘dbpassword’),
‘charset’ => ‘utf8’,
‘prefix’ => ”,
],
[/php]
三、.env修改連線
[php]
DB_CONNECTION=sqlsrv
DB_HOST=localhost
DB_PORT=1433
DB_DATABASE=dbname
DB_USERNAME=dbuser
DB_PASSWORD=dbpassword
[/php]
四、測試是否可以產生
routes/web.php
[php]
Route::get(‘/’, function () {
var_dump( DB::table(‘tablename’)->first() );
});
[/php]

Laravel 5.3 Artisan 自動建立CRUD的Controller

在5.2之前,是使用以上指令產生有resource(CRUD函數的controller)
[php]
php artisan make:controller MyNameController
[/php]
然後
[php]
php artisan make:controller MyNameController –plain
[/php]
在5.3,改為要加上 –resource才有
[php]
php artisan make:controller MyNameController –resource
[/php]

PHP教學 – 這學期教的laravel 5.3課程內容

上個學期是教Codeigniter,這學期開始也要進入Laravel了!內容大致如下面~
Laravel介紹
MVC架構解說
Git版本控制介紹與安裝
Composer套件管理

Laravel安裝

Package安裝及使用
Route路由
Migrations/Seed 資料的遷移與填充

Eloquent ORM資料庫互動

View與Blade模板引擎
Controller實戰

CRUD 綜合運用

表單與驗證技巧
會員認證
網站安全性

支援Google最新安全策略的遠振虛擬主機

如果對遠振有興趣的話,可以直接到 遠振主機選購。
Google從2014年宣佈有https的網頁會優先排序後,今年更發佈訊息說2017年1月開始的Chrome 56版本中,會針對傳輸密碼以及信用卡資訊的網頁,如果沒有使用https加密,就會一律告知是不安全的網站。


而以往申請SSL加密認證網頁的手續相當繁瑣,幸好遠振在今年2月就推出Linux主機的 Let’s Encrypt免費SSL加密服務,而八月底的cPanel 版本 58 開始,也提供了官方的 AutoSSL 服務,由 cPanel & Comodo 一起提供免費 SSL 憑證。
當然你會問,那免費SSL跟付費的SSL有什麼差異?遠振也給你答案如下
Q:Let’s Encrypt 提供之 SSL 與付費 SSL 有什麼分別?

A:免費 SSL 與付費 SSL 間的差異有:

1. 品牌差異:
付費 SSL 有國際知名廠商如賽門鐵克(Verisign)、GeoTrust、Comodo、TWCA 等,根據調查,有 7 成以上的網友認得這些品牌,在電子商務網站上使用知名 SSL 廠商相對容易獲得客戶信任。
2. 憑證期限:
免費 SSL 只提供 3 個月使用期限,系統雖然會自動續約但是有續約失敗的風險,相對於付費 SSL 提供 1~3 年的購買期限可選擇,付費 SSL 還是商務網站的穩定選擇。
3. 多網域憑證:
免費 SSL 不提供萬用子網域的 SSL (wildcard ssl)。
4. 憑證標章:
免費 SSL 沒有提供憑證的驗證標章 (ssl seal),在正式電商網站上會建議用付費 SSL 取得動態驗證標章,贏得客戶信任。
5. 技術差異:
基本上免費與付費 SSL 加密技術差異不大。
6. 驗證方式:
免費 SSL 只提供網域驗證,不提供組織驗證 SSL,若要向銀行申請金流串接,可能須提供組織驗證 SSL。
除此之外,遠振也提供HTTP/2.0的加速技術。HTTP/2.0 是自 HTTP/1.1 於 1997 年由 IETF 發表後,最重大的更新。HTTP/2 使用二進制取代文字傳輸,並導入 HPACK 來壓縮 header,ALPN 用來加速加密傳輸,且具備在一個 TCP 連線中,平行處理多個要求的能力。就好像幫賽車加上氮氣加速一樣,讓網站瀏覽神速!

你的網站是否支援HTTP/2呢? 可以到 https://tools.keycdn.com/http2-test 測試!

如果對遠振有興趣的話,可以直接到 遠振主機選購。

CodeIgniter PHP 產生 Sitemap

網站建立了Sitemap.xml文件能夠快速地被Google、Bing等收錄且有利於搜尋的檔案。
CodeIgniter產生的方式:
controller
[php]
Class Seo extends CI_Controller {

function sitemap()
{

$data = "";//網站的url
header("Content-Type: text/xml;charset=iso-8859-1");
$this->load->view("sitemap",$data);
}
}
[/php]
views
[php]
<?= ‘<?xml version="1.0" encoding="UTF-8" ?>’ ?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc><?= base_url();?></loc>
<priority>1.0</priority>
</url>

<!– My code is looking quite different, but the principle is similar –>
<?php foreach($data as $url) { ?>
<url>
<loc><?= base_url().$url ?></loc>
<priority>0.5</priority>
</url>
<?php } ?>

</urlset>
[/php]
config/routes.php

$route[‘seo/sitemap\.xml’] = “seo/sitemap”;

CodeIgniter php上傳後FTP至另一台主機

二台主機都是使用 遠振主機
system/libraries/upload.php
[php]
$cmd = function_exists(‘escapeshellarg’)
? ‘file –brief –mime ‘.@escapeshellarg($file[‘tmp_name’]).’ 2>&1′
: ‘file –brief –mime ‘.$file[‘tmp_name’].’ 2>&1′;
[/php]

view.php
[php]
<form method="post" enctype="multipart/form-data">
<label>選擇檔案</label>
<input type="file" name="file" />
<input type="submit" name="submit" value="上傳">
</form>
[/php]

controller.php
[php]
if($this->input->post(‘submit’)){
//上傳到本機
$config[‘upload_path’] = @’./uploads/’;
$config[‘allowed_types’] = ‘jpg’;
$this->load->library(‘upload’, $config);

if($this->upload->do_upload(‘file’))
{
// 上傳檔案
$upload_data = $this->upload->data();
$fileName = $upload_data[‘file_name’];

// 本機檔案位置
$source = @’./uploads/’.$fileName;

// 載入ftp函式庫
$this->load->library(‘ftp’);

// ftp參數
$ftp_config[‘hostname’] = ‘xxxx’;
$ftp_config[‘username’] = ‘xxxx’;
$ftp_config[‘password’] = ‘xxxx’;
$ftp_config[‘debug’] = TRUE;

// 連線ftp
$this->ftp->connect($ftp_config);

// ftp檔案位置
$destination = ‘/public_html/assets/’.$fileName;

// 上傳ftp
$this->ftp->upload($source, ".".$destination,"auto",0777);

// 關閉ftp
$this->ftp->close();

// 刪除本機資料
@unlink($source);
}
}
[/php]

PHP 透過 Google Map Geocode取得地址的經緯度

[php]
$address = $_GET["address"];
$url = "http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$response_a = json_decode($response);
echo "您的地址:".$address."<br/>";
echo "所在的經度(latitude):".$lat = $response_a->results[0]->geometry->location->lat;
echo "<br />";
echo "所在的緯度(longitude):".$long = $response_a->results[0]->geometry->location->lng;
[/php]