鍍金池/ 問(wèn)答/ PHP問(wèn)答
短嘆 回答
代碼沒(méi)有一個(gè)實(shí)例,全是靜態(tài)方法調(diào)用

那是因?yàn)?php 以前就沒(méi)有 OO 那套東西。有毛好處,就是簡(jiǎn)陋。

PHP不像java, 對(duì)象的生命周期極短, 實(shí)例化沒(méi)有意義,對(duì)嘛?

那看什么對(duì)象,如何設(shè)計(jì), web 場(chǎng)景下, java 如果處理每個(gè)請(qǐng)求都實(shí)例化一下,一樣生命周期極短。

文件操作模式介紹

clipboard.png

問(wèn)題中的錯(cuò)誤

modefread 不對(duì)應(yīng)。
(仔細(xì)閱讀 mode 說(shuō)明。)

正確使用方式,請(qǐng)自行參考:

還吻 回答

$abc = "12ww@qq.com";
$a = strpos($abc,"@");
$str = substr($abc,0,$a)."<br>".substr($abc,$a);

撥弦 回答

服務(wù)器(nginx)通過(guò)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記錄里面尋找。

冷咖啡 回答

兄弟 你這里提示了哪個(gè)路由(也就是哪個(gè)頁(yè)面)出錯(cuò)了 你就改哪一個(gè)啊。別人沒(méi)有看見(jiàn)你的代碼 咋給你解決

孤巷 回答

1.理論上這一步應(yīng)該程序里防一道就OK了,然后不差錢(qián)買(mǎi)一個(gè)叫“Web應(yīng)用防火墻”的產(chǎn)品
https://www.aliyun.com/produc...

2.https有必要,目前的現(xiàn)狀chrome瀏覽器、微信小程序、iOS審核等等都幾乎需要支持https了。具體作用是主要是比http協(xié)議多了一層數(shù)據(jù)加密傳輸,防止篡改數(shù)據(jù)和監(jiān)聽(tīng)數(shù)據(jù)

3.數(shù)據(jù)庫(kù)要買(mǎi)RDS,選擇5.6高可用版本,就是讀寫(xiě)分離的版本,復(fù)制問(wèn)題阿里云服務(wù)本身會(huì)解決,你只管應(yīng)用層讀的時(shí)候去讀庫(kù)就可以了

懶洋洋 回答

$member = session_member(); //這里輸出一下$member;
session_member();這個(gè)沒(méi)傳值就調(diào)用下面:
function session_member(member){

return $member = session('member', null); //session('member', null)返回什么值?
}
一步步輸出排查吧,另外能貼代碼嗎,貼圖代碼有錯(cuò)也不想給你改

半心人 回答

不用chrome就ok, 不然的話就不要用這后綴了

墨沫 回答
// 重寫(xiě)默認(rèn)的notAllowedHandler
$container['notAllowedHandler'] = function ()
{
    return function ($req, $res, $allowMethod) {
        return $res->withJson([
            "status" => 0,
            "info" => "請(qǐng)求方法錯(cuò)誤",
            "data" => $allowMethod
        ]);
    };
};
拮據(jù) 回答

平常如果是自己寫(xiě)的話,一般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ù)的合法性過(guò)濾, 最后的update會(huì)做相關(guān)的響應(yīng)頭設(shè)置,其實(shí)和平常一樣的,并不神秘。如果不明白我在說(shuō)什么,可以去了解下jsonp,以及php該如何響應(yīng)jsonp請(qǐng)求,相信會(huì)有不錯(cuò)的收獲。

過(guò)客 回答

1、先說(shuō)費(fèi)用成本

以下只討論DV域名型證書(shū)(僅驗(yàn)證域名所有權(quán))的費(fèi)用成本,對(duì)于信用卡資訊通常建議使用OV證書(shū)
  • a) 免費(fèi)證書(shū)有很多,例如let's encrypt、國(guó)內(nèi)各類云下面的首年免費(fèi)證書(shū),let's證書(shū)是一個(gè)開(kāi)源公共的免費(fèi)SSL數(shù)字證書(shū)項(xiàng)目,指在普及SSL,其不提供保費(fèi),3個(gè)月有效期,需3個(gè)月續(xù)簽一次,但基本保障足夠;
  • b) 國(guó)內(nèi)各類云下面的免費(fèi)證書(shū)大多由中級(jí)CA亞洲誠(chéng)信提供的首年免費(fèi)證書(shū)、或者是GeoTrust提供的首年免費(fèi)證書(shū),也就是說(shuō)次年需要付費(fèi)或者其它形式的費(fèi)用,也或者是每年免費(fèi)續(xù)簽,請(qǐng)留意次年付費(fèi)價(jià)格;
  • c) RapidSSL的30天免費(fèi)試用,這個(gè)品牌比較久遠(yuǎn)了,因DigiCert收購(gòu)Symantec的數(shù)字證書(shū)業(yè)務(wù),所以目前這款證書(shū)的根CA和B項(xiàng)的根CA都易主為DigiCert,但品牌不受影響,缺點(diǎn)是只可使用30天;
  • d) 利害關(guān)系,infiniSign作為CA的合作伙伴,提供常年[¥39/年的PositiveSSL(https://www.infinisign.com/pr...(Comodo科摩多旗下品牌),可適用于長(zhǎng)期穩(wěn)定的SSL/TLS業(yè)務(wù)需求;

2、BlueHost如何開(kāi)啟HTTPS

因BlueHost采用的是cPanel主機(jī)面板,所以很好找到在SSL/TLS菜單,有以下幾個(gè)配置

  • 私鑰
  • 證書(shū)簽名請(qǐng)求
  • 證書(shū)
  • 為您的站點(diǎn)(HTTPS)安裝和管理SSL

此項(xiàng)配置,依賴于申請(qǐng)第三方證書(shū),此類資料可在我司官網(wǎng)常見(jiàn)問(wèn)題

另外有些cPanel控制臺(tái)中有一鍵盤(pán)部署let's encrypt功能。

咕嚕嚕 回答

你先試直接用curl訪問(wèn)這個(gè)https地址, 看看報(bào)錯(cuò)信息.

$ch = curl_init('https://...:/xx/xx/xx?wsdl');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_VERBOSE => 1,
    CURLOPT_CERTINFO => 1,
]);

curl_exec($ch);

看看是不是openssl.cafile(php.ini中)設(shè)置有問(wèn)題.
如果是這個(gè)問(wèn)題, 到https://curl.haxx.se/docs/cae... 這兒下載文件,
設(shè)置curl_setopt(CURLOPT_CAINFO, '下載的.pem文件')
或者直接設(shè)置openssl.cafile(php.ini中)

另外, 極有可能你的字段沒(méi)寫(xiě)對(duì), 是http, 不是https

孤酒 回答

404錯(cuò)誤, 檢查后端路由