鍍金池/ 問答/ PHP問答
拮據(jù) 回答

平常如果是自己寫的話,一般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)的

clipboard.png

其次,再說說靜態(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è)里怎么說的

clipboard.png

這樣應(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
        ]);
    };
};
半心人 回答

php不都是解壓就可以用免安裝的嗎;
關(guān)于版本:如果你要在32位或者64位系統(tǒng)的都可以運(yùn)行,最好是下載32位的就可以了。
關(guān)于cmd運(yùn)行: php是可以在cli模式下運(yùn)行的,也就是windows的cmd下是可以直接運(yùn)行的。
具體步驟:

  1. http://php.net/downloads.php 下載一個(gè)32位的安裝包解壓;

  2. 把你解壓的安裝包的bin目錄添加到系統(tǒng)環(huán)境變量

  3. 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 headershost(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ò)誤再說