平常如果是自己寫的話,一般javascript會(huì)攜帶一個(gè)callback參數(shù)傳給服務(wù)器端php,而php響應(yīng)jsonp的話一般是如下格式:
echo $callback.'('.$data.');';
在laravel中,withCallback
方法它里面只有一行,參數(shù)也就是客戶端callback名,是一個(gè)字符串而已,也就是你看到的$request->input('callback')
:
return $this->setCallback($callback);
而setCallback
方法如下:
public function setCallback($callback = null)
{
if (null !== $callback) {
// partially taken from http://www.geekality.net/2011/08/03/valid-javascript-identifier/
// partially taken from https://github.com/willdurand/JsonpCallbackValidator
// JsonpCallbackValidator is released under the MIT License. See https://github.com/willdurand/JsonpCallbackValidator/blob/v1.1.0/LICENSE for details.
// (c) William Durand <william.durand1@gmail.com>
$pattern = '/^[$_\p{L}][$_\p{L}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{200C}\x{200D}]*(?:\[(?:"(?:\\\.|[^"\\\])*"|\'(?:\\\.|[^\'\\\])*\'|\d+)\])*?$/u';
$reserved = array(
'break', 'do', 'instanceof', 'typeof', 'case', 'else', 'new', 'var', 'catch', 'finally', 'return', 'void', 'continue', 'for', 'switch', 'while',
'debugger', 'function', 'this', 'with', 'default', 'if', 'throw', 'delete', 'in', 'try', 'class', 'enum', 'extends', 'super', 'const', 'export',
'import', 'implements', 'let', 'private', 'public', 'yield', 'interface', 'package', 'protected', 'static', 'null', 'true', 'false',
);
$parts = explode('.', $callback);
foreach ($parts as $part) {
if (!preg_match($pattern, $part) || in_array($part, $reserved, true)) {
throw new \InvalidArgumentException('The callback name is not valid.');
}
}
}
$this->callback = $callback;
return $this->update();
}
顯然,他幫我們做了callback參數(shù)的合法性過濾, 最后的update會(huì)做相關(guān)的響應(yīng)頭設(shè)置,其實(shí)和平常一樣的,并不神秘。如果不明白我在說什么,可以去了解下jsonp,以及php該如何響應(yīng)jsonp請(qǐng)求,相信會(huì)有不錯(cuò)的收獲。
首先我不清楚為什么要用這個(gè)函數(shù),還有你的程序?yàn)槭裁葱枰@個(gè)函數(shù),難道它是不可替代的嗎,而且官方文檔說的很明白,這個(gè)函數(shù)是極其危險(xiǎn)的
其次,再說說靜態(tài)變量這個(gè)東西,它是存在于函數(shù)作用域內(nèi)的,也就是棧里面,一般的函數(shù)內(nèi)變量在函數(shù)結(jié)束后會(huì)釋放,但是靜態(tài)變量卻不會(huì)。就是說,下次再調(diào)用這個(gè)函數(shù)的時(shí)候,該變量的值會(huì)保留下來,就像你的第一個(gè)函數(shù)。
之后,看你的第二個(gè)函數(shù),eval('static $c;')
,我們說到了作用域這個(gè)東西,看看手冊(cè)里怎么說的
這樣應(yīng)該明白了吧,你第二次調(diào)用這個(gè)函數(shù)的時(shí)候相當(dāng)于這個(gè)靜態(tài)變量又被重新定義了一次
phpstorm + xdebug
xdebug 可以用斷點(diǎn)調(diào)試 也可以輸出日志分析 phpstorm有分析工具
域名解析改下
select a.*,a.salary-b.salary as diff from salaries a left join salaries b on a.from_date=b.to_date where a.emp_no=10001 and b.emp_no=10001 order by from_date;
**行轉(zhuǎn)列很容易,自己百度下就行,但我覺得意義不大,你大可以在頁面展現(xiàn)的時(shí)候?qū)崿F(xiàn),而不是糾結(jié)于sql語句。**
// 重寫默認(rèn)的notAllowedHandler
$container['notAllowedHandler'] = function ()
{
return function ($req, $res, $allowMethod) {
return $res->withJson([
"status" => 0,
"info" => "請(qǐng)求方法錯(cuò)誤",
"data" => $allowMethod
]);
};
};
為什么不用127.0.0.1??
php不都是解壓就可以用免安裝的嗎;
關(guān)于版本:如果你要在32位或者64位系統(tǒng)的都可以運(yùn)行,最好是下載32位的就可以了。
關(guān)于cmd運(yùn)行: php是可以在cli模式下運(yùn)行的,也就是windows的cmd下是可以直接運(yùn)行的。
具體步驟:
http://php.net/downloads.php 下載一個(gè)32位的安裝包解壓;
把你解壓的安裝包的bin目錄添加到系統(tǒng)環(huán)境變量
cmd切換到你寫php文件所在的目錄 然后運(yùn)行 php 你的文件名.php
1.檢查下.htaccess:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
2.使用了域名的話,是否配置了host文件
3.vhosts.conf文件是否有配置:
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
根據(jù)各部門人員的相關(guān)字段來查詢可以查到
ActivityEnroll控制器為什么不是ActivityEnrollController.php而是ActivityEnroll.php?
服務(wù)器(nginx)
通過http
請(qǐng)求request headers
的host(wx.piian.cn)
行,匹配你配置的server_name
,當(dāng)匹配成功時(shí),就會(huì)把數(shù)據(jù)按cgi接口
定義的格式,發(fā)送給php
處理。
至于域名(wx.piian.cn)
如何找到對(duì)應(yīng)的服務(wù)器,是因?yàn)闀?huì)把域名的A記錄
或者CNAME
解析到對(duì)應(yīng)的公網(wǎng)IP
上。而域名的DNS
解析會(huì)優(yōu)先在系統(tǒng)hosts
記錄里面尋找。
Chrome幫我自動(dòng)更新了,也變成這樣了,非常不方便。
從數(shù)據(jù)庫取出open_id循環(huán)發(fā)送啊。。群發(fā)有風(fēng)險(xiǎn) 發(fā)送需謹(jǐn)慎
視頻直播這塊一沒這么容易,一般會(huì)用第三方框架,也不會(huì)用PHP,比如用C++或者go,你可以用第三方直播云平臺(tái),比如阿里云和七牛云等直播平,不僅穩(wěn)定而且流量費(fèi)用比自己做低 ,你費(fèi)了很大勁做出來還不穩(wěn)定,得不償失,現(xiàn)在很多直播平臺(tái)都是用的第三方云,包括IM
之前長(zhǎng)城防火墻封了一大批vultr的ip。大部分日本的ip都不能使用了。建議換一個(gè)ip試試。反正有鏡像。
好像解決了,加了
`ob_clean();
flush();`,就好了,什么清除緩沖區(qū),刷新緩沖區(qū)。不太懂
一般都是放在一張表里面的,加一個(gè)字段即可區(qū)分;你要是建兩張表,它們是不能調(diào)同一個(gè)接口的啊,超管在超管表里面查,普通管理員就在普通管理員表里面查了.
建議你,
首先打開 php.ini 搜索 display_errors,把 Off 修改為 On,開啟 php 錯(cuò)誤提示
看看具體報(bào)什么錯(cuò)誤,再去解決。
比如存在的問題:composer沒有安裝依賴,目錄沒有寫權(quán)限,開啟了錯(cuò)誤提示,看看錯(cuò)誤再說
tomcat的Security manager了解一下
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。