Lavavel 提供一個快速的指令來建立認證所要用到的東西
php artisan make:auth
這些指令會產生一些view 、所有認證的路由跟HomeController
最後要在route建立一個認證路由
Route::auth();
這個路由是由一些路由組成
// Authentication Routes
Route::get('login', 'App\Http\Controllers\Auth\LoginController@showLoginForm');
Route::post('login', 'App\Http\Controllers\Auth\LoginController@login');
Route::get('logout', 'App\Http\Controllers\Auth\LoginController@logout');
// Registration Routes
Route::get('register', 'App\Http\Controllers\Auth\RegisterController@showRegistrationForm');
Route::post('register', 'App\Http\Controllers\Auth\RegisterController@register');
// Password Reset Routes
Route::get('password/reset/{token}', 'App\Http\Controllers\Auth\ResetPasswordController@showResetForm');
Route::post('password/email', ' App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail');
Route::get('password/reset','App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm');
Route::post('password/reset', 'App\Http\Controllers\Auth\ResetPasswordController@reset');
可以使用指令來查看php artisan route:list
參考來源
https://laravel.tw/docs/5.3/authentication
chris yeh的學習歷程
2016年10月3日 星期一
[PHP]cURL error 60: SSL certificate problem: unable to get local issuer certificate
目前專案使用laravel,串接FB openid時出現這個錯誤,
查了一下,當使用xampp有用到curl時,都有可能會出現
cURL error 60: SSL certificate problem: unable to get local issuer certificate
最簡單的方式,進入到php.ini
將以下輸入進去,XAMPP預設的位置在這下面,當然也可以更換路徑
curl.cainfo = "C:/xampp/apache/bin/curl-ca-bundle.crt"
在不行的去curl官方抓取cacert.pem
放置到你想要的目錄下,這邊我們放置到以下位置,所以php.ini要對應路徑
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
目前試過這兩樣都可以
查了一下,當使用xampp有用到curl時,都有可能會出現
cURL error 60: SSL certificate problem: unable to get local issuer certificate
最簡單的方式,進入到php.ini
將以下輸入進去,XAMPP預設的位置在這下面,當然也可以更換路徑
curl.cainfo = "C:/xampp/apache/bin/curl-ca-bundle.crt"
在不行的去curl官方抓取cacert.pem
放置到你想要的目錄下,這邊我們放置到以下位置,所以php.ini要對應路徑
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
目前試過這兩樣都可以
2015年8月25日 星期二
[PHP] 建立Laravel Homestead (for windows)
簡介
Laravel Homestead 是一個官方預載的 Vagrant「box」,就是一般虛擬機器一樣,當系統有什麼問題時,就砍掉並重新建立,又是一個乾淨的環境,並含有基本的Laravel 建立環境。Homestead 可以在任何 Windows、Mac 或 Linux 上面運行,
裡面包含了 Nginx 網頁伺服器、PHP 5.6、MySQL、Postgres、Redis、Memcached、Node,
以及所有你在使用 Laravel 開發各種精彩的應用程式時所需要的軟體。
一、前置動作
在啟動你的 Homestead 環境之前,你必須先安裝 VirtualBox 或 VMWare 以及 Vagrant。本文介紹是安裝VirtualBox (VirtualBox-4.3.30-101610-Win)。
二、安裝 Homestead Vagrant box
在終端機輸入以下指令,將 'laravel/homestead' 這個 box 安裝進你的 Vagrant 程式中。vagrant box add laravel/homestead
三、手動clone Homestead 資源庫
將資源庫clone到你的目錄中,如此一來 Homestead box 將能提供主機服務給你所有的 Laravel 專案。(本文在c:\111下輸入下列指令)git clone https://github.com/laravel/homestead.git Homestead
建完之後,可以到所要建立目錄中的 Homestead 資料夾,點擊init.sh
(目錄位置c:\111\Homestead )
這個資料會建立在windows c:\Users\用戶名稱\.homestead
(會產生三個檔案after.sh、aliases、Homestead.yaml)
四、設定你的 Provider
在 Homestead.yaml 檔案中的 provider 參數是用來設定你想要使用哪一個 Vagrant provider: virtualbox 或 vmware_fusion。根據你的喜好來決定 provider:修改Homestead.yaml裡面內容 provider: virtualbox
五、設定你的 SSH 金鑰
這部分先跳過,之後再來使用六、設定共享資料夾
你可以在 Homestead.yaml 檔案的 folders 屬性裡列出所有你想與你的 Homestead 環境共享的資料夾。這邊可以設定為folders:
- map: C:\111\laravel //windows內的程式
to: /home/vagrant/laravel //對應到homestead的位置
七、設定 Nginx 網站
你可以在 Homestead.yaml 設定sites屬性,可以為開發中的Laravel提供更方便虛擬化環境sites:
- map: homestead.app
to: /home/vagrant/laravel/public
八、關於 Hosts 檔案
在 Windows 上,則存放於 C:\Windows\System32\drivers\etc\hosts。你要設定於檔案中的內容類似如下:192.168.10.10 homestead.app
九、啟動 Vagrant box
編輯完成Homestead.yaml 後、進入你的Homestead目錄並執行vagrant up指令。Vagrant 就會建立啟動虛擬主機並設定你的共享資料夾。
如果要移除虛擬主機則輸入vagrant destory --force。
十、測試
務必確認 IP 位置與 Homestead.yaml 檔案中設定的相同。一旦你將網域設定在 hosts 檔案之後,你就可以透過網頁瀏覽器造訪你的網站!http://homestead.app
備註:
※如果網頁結果為No input file specified.結果要先檢查路徑有沒有問題,還是出現同樣問題的話,就在終端機下輸入:vagrant provision。
※vagrant ssh 登入之後,可以檢查共享的資料夾有沒有正確
※ssh預設的帳號密碼是vagrant
※sql預設的帳號密碼是homestead/secret
參考網址:http://laravel.tw/docs/5.1/homestead
2015年8月12日 星期三
[PHP] PDO操作(三)
這節介紹PDO->exec(sql)
語法:
PDO->exec( sql )
說明:
針對沒有返回結果的操作,例如insert、update、dalete等等
實作:
也可以使用預處理的方式
實作:
或是這樣也可以
也有可以帶入?的方式
語法:
PDO->exec( sql )
說明:
針對沒有返回結果的操作,例如insert、update、dalete等等
實作:
$sql = "INSERT INTO user (Name, Email)VALUES('AAA','test@gmail.com')";
$count = $db->exec($sql);
echo "寫入".$count."筆資料";
$sql = "UPDATE user SET Email = 'test@yahoo.com' WHERE Name = 'AAA'";
$count = $db->exec($sql);
echo "更新".$count."筆資料";
也可以使用預處理的方式
預處理可以把要運行的SQL當作一種模板,可以帶來兩種好處
第一種:查詢只需處理一次就可以讓相同或不同的參數執行多次,通常可以使處理速度加快
第二種:安全性問題,可以確保不會有sql注入發生。
$sql = "INSERT INTO user (Name, Email)VALUES(':Name,:Email)";
$stmt = $db->prepare($sql);
$stmt->bind_param(':Name',$name);
$stmt->bind_param(':Email',$email);
$stmt->execute();
或是這樣也可以
$sql = "INSERT INTO user (Name, Email)VALUES(':Name,:Email)";
$stmt = $db->prepare($sql);
$query->execute(
array(':Name' => 'AAA',
':Email' => 'test@gmail.com'
));
也有可以帶入?的方式
$sql = "INSERT INTO user (Name, Email) VALUES (?, ?)";
$stmt = $db->prepare($sql);
$stmt->bind_param('AAA', 'test@gmail.com');
$stmt->execute();
或是
$sql = "INSERT INTO user (Name, Email) VALUES (?, ?)";
$stmt = $db->prepare($sql);
$stmt->execute(
array(':Name' => 'AAA',
':Email' => 'test@gmail.com'
));
[PHP] PDO操作(二)
這節介紹PDO->query
語法:
PDO->query(sql);
說明:
用來查詢資料,並返回結果(像是select操作)
實作:
可以使用這種方式
語法:
PDOStatement->fetch(mode)
說明:
PDO的fetch()方法用來獲取一行結果,相當於一般的mysql_fetch_array
實作:
mode為可選參數
PDO::FETCH_ASSOC [以索引組成(陣列型態)]
ex:
[Flag] => 1
[Name] => John
PDO::FETCH_NUM [以數字索引組成(陣列型態)]
ex:
[0] => 1
[1] => John
PDO::FETCH_BOTH [預設值:索引跟數字索引都有(陣列型態)]
ex:
[Flag] => 1
[0] => 1
[Name] => John
[1] => John
PDO::FETCH_OBJ [以索引組成(物件型態)]
PDO::FETCH_BOUND [透過bindColumn()的方法將列的值列在變數上]
PDO::FETCH_CLASS [不知]
PDO::FETCH_INTO [不知]
PDO::FETCH_LAZY [不知]
語法:
PDOStatement->setFetchMode()
說明:
如果不在fetch()中指定返回結果類型
實作:
語法:
PDOStatement->fetchAll(mod,[int column_index])
說明:
fetchAll()用來把資料一次取出並存放到陣列中
mode為可選參數如下:
PDO::FETCH_COLUMN [指定返回某一列,有column_index參數指定]
PDO::FETCH_UNIQUE [不知]
PDO::FETCH_GROUP [不知]
語法:
PDO->query(sql);
說明:
用來查詢資料,並返回結果(像是select操作)
實作:
可以使用這種方式
$stmt = $db->query($sql);
while($row = $stmt->fetch()){
print_r($row);
echo "<br />";
}
或是這種方式
$stmt = $db->query($sql);
foreach($stmt as $row){
print_r($row);
echo "<br />";
}
語法:
PDOStatement->fetch(mode)
說明:
PDO的fetch()方法用來獲取一行結果,相當於一般的mysql_fetch_array
實作:
$stmt = $db->query($sql);
while($row = $stmt->fetch()){
print_r($row);
echo "<br />";
}
mode為可選參數
PDO::FETCH_ASSOC [以索引組成(陣列型態)]
ex:
[Flag] => 1
[Name] => John
PDO::FETCH_NUM [以數字索引組成(陣列型態)]
ex:
[0] => 1
[1] => John
PDO::FETCH_BOTH [預設值:索引跟數字索引都有(陣列型態)]
ex:
[Flag] => 1
[0] => 1
[Name] => John
[1] => John
PDO::FETCH_OBJ [以索引組成(物件型態)]
PDO::FETCH_BOUND [透過bindColumn()的方法將列的值列在變數上]
PDO::FETCH_CLASS [不知]
PDO::FETCH_INTO [不知]
PDO::FETCH_LAZY [不知]
語法:
PDOStatement->setFetchMode()
說明:
如果不在fetch()中指定返回結果類型
實作:
$stmt = $db->query($sql);
$stmt->setFetchMode(mode);
while($row = $stmt->fetch()){
print_r($row);
echo "<br />";
}
語法:
PDOStatement->fetchAll(mod,[int column_index])
說明:
fetchAll()用來把資料一次取出並存放到陣列中
mode為可選參數如下:
PDO::FETCH_COLUMN [指定返回某一列,有column_index參數指定]
PDO::FETCH_UNIQUE [不知]
PDO::FETCH_GROUP [不知]
2015年8月11日 星期二
[PHP] PDO操作(一)
PDO (PHP Data Object) 在php6時將以預設的資料庫處理,
所以必須了解一下
使用PDO方式連線資料庫部分建立
一開始先設定初始值
$dbtype_sql = 'mysql';
$host = 'localhost';
$act = 'root';
$pwd = '....';
$dbname = 'db_name';
接著建立連線
下一節建立基礎的操作教學
所以必須了解一下
使用PDO方式連線資料庫部分建立
一開始先設定初始值
$dbtype_sql = 'mysql';
$host = 'localhost';
$act = 'root';
$pwd = '....';
$dbname = 'db_name';
接著建立連線
try {
$db = new PDO($dbtype_sql . ':host=' . $host . ';dbname=' . $dbname, $act, $pwd);
// 資料庫使用 UTF8 編碼
$db->query('SET NAMES UTF8');
echo '連線成功';
} catch (PDOException $e) {
echo '連線未成功。問題拋出:',$e->getMessage();
exit;
}
下一節建立基礎的操作教學
2015年8月3日 星期一
[css] media query的呼叫方法
media query要支援CSS3才能正常作業,IE8以下則不支援,
在這邊media query的呼叫方法有以下幾種:
1、在html中呼叫css檔案
2、使用@import方法
3、直接寫在CSS檔裡面
以上範例(min-width:400px) and (max-width:700px)是說
當視窗寬度在400px~700px時,會套用css檔,
而最多人使用當然是第三種了。
除了width之外,還有一個device-width可以使用,如
當裝置寬度在700px時,會套用css檔
media query中,以上這兩個有何不同?
我們可以使用min-width和max-width來判斷使用者視窗的寬度,
而min-device-width和max-device-width則是使用者裝置的最大寬度,
所以device-width大部分是用在判斷手機寬度。
在這邊media query的呼叫方法有以下幾種:
1、在html中呼叫css檔案
<link rel="stylesheet" media="screen and (min-width:400px) and (max-width:700px)" href="main.css" />
2、使用@import方法
@import "main.css" screen and (min-width:400px) and (max-width:700px)
3、直接寫在CSS檔裡面
@media screen and (min-width:400px) and (max-width:700px) {
a {
color:blue;
}
}
以上範例(min-width:400px) and (max-width:700px)是說
當視窗寬度在400px~700px時,會套用css檔,
而最多人使用當然是第三種了。
除了width之外,還有一個device-width可以使用,如
@media screen and (max-device-width:700px) {
a {
color:blue;
}
}
以上範例(max-device-width:700px)是說當裝置寬度在700px時,會套用css檔
media query中,以上這兩個有何不同?
我們可以使用min-width和max-width來判斷使用者視窗的寬度,
而min-device-width和max-device-width則是使用者裝置的最大寬度,
所以device-width大部分是用在判斷手機寬度。
訂閱:
文章 (Atom)