鍍金池/ 問答/ PHP問答
我以為 回答

前后端分離的話,前端獲取返回的數(shù)據(jù),根據(jù)業(yè)務(wù)(也就是你的類型)進(jìn)行跳轉(zhuǎn)
未分離的情況如果用的是balde模板,改下return view('你想跳轉(zhuǎn)的頁面的名稱')即可吧

空白格 回答

加多一個(gè)if判斷,或者在sql 語句添加多個(gè)where的條件判斷即可。

來守候 回答

樓上說的沒錯(cuò),如果設(shè)計(jì)到時(shí)區(qū)問題,就不能存date了。時(shí)間戳是個(gè)人認(rèn)為最好的解決辦法

陌南塵 回答

clipboard.png
array_unshift返回的是被添加的數(shù)組的新數(shù)目,所以會(huì)返回一個(gè)數(shù)字,而不是追加后的新數(shù)組

陌離殤 回答

form表單是否有增加enctype=”multipart/form-data”

冷溫柔 回答

laravel沒用過,不過swiftMailer可以這樣搞:

$transport = Swift_SmtpTransport::newInstance($send_host, 25)
    ->setUsername($email_config['email'])
    ->setPassword($email_config['password']);
$mailer = new Mailer();
$mailer->setTransport($transport);
//Priority value, should be an integer in range: 1..5, where 1 is the highest priority and 5 is the lowest.
$priority = $email['isurgent'] == 2 ? 1 : 3;
$message = (new Message())
    ->setFrom([$email['send_mail'] => $email['send_name']])
    ->setTo(explode(';', $email['receive_mail']))
    ->setSubject($email['title'])
    ->setHtmlBody($email['content'])
    ->setPriority($priority);
$email['ccperson'] ? $message->setCc(explode(';', $email['ccperson'])) : '';
$email['bccperson'] ? $message->setBcc(explode(';', $email['bccperson'])) : '';
$email['isreturn'] ? $message->setReadReceiptTo($email['send_mail']) : '';
$attachment = json_decode($email['attachment'] ?: '[]', true);
$base_path = getcwd() . '/';
foreach ($attachment as $v) {
    if (file_exists($base_path . $v['path'])) {
        $message->attach($base_path . $v['path'], ['fileName' => $v['name'], 'contentType' => $v['type']]);
    }
}
$result = $mailer->send($message);

設(shè)置下transport 。

兮顏 回答

就是數(shù)字, 按字符串來說, 是 1 10 11 ... 19 2 3 4 ... 9 90 91 ... 99, 按自然排序是 1 2 3 4 ... 10 11 12 ... 20 21 22 ... 90 ... 99

孤影 回答

content-length 錯(cuò)誤就設(shè)置請(qǐng)求頭就行了啊

  1. 在點(diǎn)擊按鈕后,給有權(quán)限的人分配一個(gè)Token,并將該Token 記錄到緩存中,設(shè)置為 1分鐘過期.
    操作:

    用戶點(diǎn)擊進(jìn)入按鈕的時(shí)候, 判斷當(dāng)前擁有權(quán)限的人數(shù)是否達(dá)到閥值 (判斷Token的數(shù)量)
    達(dá)到閥值,然會(huì)403 Forbidden. 否則生成新的Token 分配給該用戶
    
  2. 將該Token 發(fā)送給前端, 后續(xù)有限制的操作都要求客戶端將 Token回傳給服務(wù)器. 交由服務(wù)器嚴(yán)重Token 的有效性, 有效才能訪問,否則不可以訪問.

大致邏輯應(yīng)該是這樣的.僅供參考.

這個(gè)代碼肯定是跑不起來的哦.不過思路應(yīng)該就這樣了

<?php

// 除了 Auth 可以匿名訪問(就是客戶端請(qǐng)求的時(shí)候,不帶Token的情況)之外. 其他的所有請(qǐng)求都必須攜帶Token上傳
// 這里的Token 可以放到 Header 中
$request = HttpRequest;
$response = HttpResponse();
// 請(qǐng)求資源不是Auth,且沒有攜帶Token的情況,直接返回403,或者跳轉(zhuǎn)頁面到獲取Token的地方(就是點(diǎn)擊進(jìn)入頁面的那個(gè)按鈕的地方)
if ($request->getPath() !== 'auth' && !$request->getHeader('token')) {
    return $response->withHeader(403);
}

// 如果攜帶Token,但是Token已經(jīng)失效,那么不能訪問,或者跳轉(zhuǎn)到獲取Token頁面重新獲取Token
if ($token = $request->getHeader('token') && !(new Accessable($token))->isTokenAvaliable()) {
    return $response->withHeader(403); 
}

// 正常邏輯

/*****************************************************************************************/

class Accessable()
{
    protected $token;
    
    public function __construct($token)
    {
        $this->token = $token;
    }
    
    /**
     * 老用戶是否還有權(quán)限可以訪問,就是判斷他的Token是否還存在,畢竟1分鐘后,Token就會(huì)自動(dòng)被刪除
     */
    public function isTokenAvaliable()
    {
        $redis = Redis();
        if ($redis->exists($token)) {
            return true;
        }
        
        return false;
    }
}

/**
 * 授權(quán)操作
 */
class Auth
{
    const EXPIRE_TIME = 60;
    const AUTH_TOKENS = 'auth_tokens';    // 用來保存所有的Token,方便Redis查詢
    
    public function POST()
    {
        if (!$this->isNewUserAvaliable()) {
            return 403; // 返回403 Forbidden
        }

        $token = $this->generateToken();
        
        return $token;
    }
        
    /**
     * 生成可以訪問的票據(jù)Token
     */
    protected function generateToken()
    {
        $redis = new Redis();
        $token = sprintf('Token:%s', uuid());
        $redis->set($token, 1);
        $redis->expire($token, self::EXPIRE_TIME);     // 設(shè)置為1分鐘自動(dòng)過期
        $redis->sAdd(self::AUTH_TOKENS, $token);
        
        return $token;
    }
    
    /**
     * 對(duì)于新用戶是否可以訪問判斷(因?yàn)樗麤]有攜帶Token上來,那么就是新用戶)
     * 判斷方式,是查詢Redis中存在的Token數(shù)量是否達(dá)到閥值
     */
    protected function isNewUserAvaliable()
    {
        $redis = new Redis();
        $tokens = $redis->sMembers(self::AUTH_TOKENS);
        $counter = 0;
        foreach ($tokens as $token) {
            if ($redis->exists($token)) {
                ++$counter;
                continue;
            }
            
            $redis->sRem($token);
        }
        
        if ($counter >= self::MAX_USER_COUNT) {
            return false;
        }
        
        return true;
    }
}




氕氘氚 回答

為什么一定要退出才請(qǐng)求后臺(tái)?不能點(diǎn)了收藏之后就請(qǐng)求么?

萢萢糖 回答

593這個(gè)地方加個(gè)引號(hào)試試""
"scene":{"scene_str": "5932121212121212121212"}

舊言 回答

不知道你是怎么配置的,一般就是在httpd-vhosts.conf文件中增加域名配置項(xiàng)解決。

<VirtualHost *:443>
    DocumentRoot "D:\wamp\www\project"
    ServerName project.com
    SSLEngine on
    SSLProtocol TLSv1 TLSv1.1 TLSv1.2

    SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4

    SSLCertificateFile "D:\wamp\bin\apache\apache2.4.9\conf\cert\***.crt"

    SSLCertificateKeyFile "D:\wamp\bin\apache\apache2.4.9\conf\cert\***.key"

    SSLCertificateChainFile "D:\wamp\bin\apache\apache2.4.9\conf\cert\***.crt"

</VirtualHost>
悶騷型 回答

用docker容器啟數(shù)據(jù)庫服務(wù)的話,需要將數(shù)據(jù)庫的數(shù)據(jù)掛載到宿主機(jī)上,否則每次重啟容器都會(huì)導(dǎo)致數(shù)據(jù)丟失。
可以使用-v參數(shù)將mysql的數(shù)據(jù)目錄/var/lib/mysql掛載到宿主機(jī)的某個(gè)目錄下,就可以持久化數(shù)據(jù)。

孤慣 回答

控制臺(tái)有報(bào)錯(cuò)嗎?是不是上次的接口走的是http的?

九年囚 回答
// 綁定事件,點(diǎn)擊一次放大兩級(jí)    
div.onclick = function(e){  
    map.zoomTo(map.getZoom() + 2);    
}  
離殤 回答

如圖

訂單
圖片描述

orderinfo
圖片描述

執(zhí)行SQL為:

select sum(a.price * a.count) as total, a.order_id, b.user_id 
from `orderinfo` as a, `order` as b 
where a.order_id=b.id 
group by a.order_id
order by total DESC 
limit 10;

運(yùn)行結(jié)果:

圖片描述

請(qǐng)參考。

終相守 回答

兩種方法, 一種是直接用Collectionforeach方法:

Model::all()->each(function ($item){
 // ...
})

另外一種是先從Collection里取出數(shù)組, 用toArray方法,再foreach:

$all = Model::all()->toArray();
foreach ($all as $item) {
  // ...
}