鍍金池/ 問(wèn)答/ PHP問(wèn)答
忘了我 回答
一天一個(gè)手機(jī)號(hào)碼phone只能提交一次訂單

可以從數(shù)據(jù)庫(kù)的設(shè)計(jì)方面進(jìn)行調(diào)整

根據(jù)業(yè)務(wù)邏輯,手機(jī)號(hào)和天 這兩個(gè)字段需要聯(lián)合唯一

在表中新增 the_data 字段,字段的值是 這行記錄插入時(shí)的日期(如20171219),將手機(jī)號(hào)字段 和 天數(shù)字段 聯(lián)合唯一,就可以完全杜絕一天內(nèi)重復(fù)提交的可能了

離觴 回答

直接設(shè)置個(gè)變量 移入修改變量 通過(guò)變量的值 v-if區(qū)別渲染圖片

function {
1.開(kāi)啟事務(wù)

 // 查詢(xún)庫(kù)存(2.使用表鎖或者行鎖(防止高並發(fā)出現(xiàn)數(shù)據(jù)錯(cuò)誤,但性能消耗會(huì)高,推薦行鎖) 假如你這裡考慮到性能問(wèn)題,建議考慮使用nosql或者使用樂(lè)觀鎖。)
 // 用戶(hù)積分是否足夠(3.不夠就rollback)
 // 生成訂單并扣除庫(kù)存

4.提交事務(wù)
}

替身 回答

我來(lái)給你解答
比如 你發(fā)表的問(wèn)題為 question 你的問(wèn)題屬于laraval范疇 ,如果想要跳到 laraval范疇列表并且附加一個(gè)參數(shù)說(shuō)明就用 link
$question->laraval->link('#tap','312') 輸出的連接為 /question/40?#tap&321

冷溫柔 回答
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://h5.eqxiu.com/s/CzvPVCNt",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  // CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_SSL_VERIFYHOST => 2,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Cache-Control: no-cache",
    "Postman-Token: 17957144-bad2-42f2-99b9-50d2f313c37f",
    "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
  ),
));

$response = curl_exec($curl);
$info = curl_getinfo($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
失魂人 回答

使用 storage_path 讀取 session 目錄然后遍歷刪除即可

while (($file = readdir(opendir(storage_path('framework/sessions')))) !== false) {
    if ($file != "." && $file != "..") {
        @unlink("$dir/$file")
    }
}
兔寶寶 回答

你可以使用 ORM的對(duì)象操作數(shù)據(jù)庫(kù),你也可以寫(xiě)DQL操作數(shù)據(jù),你可以寫(xiě) SQL來(lái)操作數(shù)據(jù)庫(kù)。

ORM 無(wú)法涵蓋所有的SQL標(biāo)準(zhǔn),直接寫(xiě)SQL又可能會(huì)有風(fēng)險(xiǎn)。就出了DQL,語(yǔ)法還和sql很像

礙你眼 回答

users // 用戶(hù)表
plugins // 插件
user_plugin_relationships //用戶(hù)插件關(guān)系表

你這個(gè)直接就起名a1_cat_relationships 然后在主鍵里把表是干什么用的寫(xiě)到備注里
數(shù)據(jù)庫(kù)還是給開(kāi)發(fā)人員看的,內(nèi)部統(tǒng)一一套規(guī)矩就OK了

冷咖啡 回答

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

前端線(xiàn)上業(yè)務(wù)不建議使用這些東西,因?yàn)楦卟l(fā)情況下非常容易產(chǎn)生鎖,只有在后端統(tǒng)計(jì)模塊才會(huì)用

巫婆 回答

select
(select name from user where user.uid = c.uid) as replyer,
(select name from user where user.uid = c.to_uid) as replyed,
c.content
from comment c
where id=1

理解下來(lái)數(shù)據(jù)都是在comment表中,只是comment.uid 和 comment.to_uid 需要轉(zhuǎn)義成名稱(chēng),
上述sql 有可能提供一些解決思路。

陪她鬧 回答

如果用相對(duì)地址,需要注意是針對(duì)你的 CWD (當(dāng)前工作目錄)為起點(diǎn)的,通常 HTTP 環(huán)境下 CWD 是你的網(wǎng)站根目錄,你可以用 getcwd() 查看和用 chdir() 切換。如果你實(shí)在搞不清楚,可以相對(duì)當(dāng)前文件的目錄來(lái),比如 include __DIR__.'/../php/b.php';,比較老的(好像是 5.1 以前吧)沒(méi)有 __DIR__ 可以用 dirname(__FILE__) 替代。

--

我又看了下,您的目錄結(jié)構(gòu)是這樣的吧:

  • a.php
  • php

    • b.php
  • user

    • c.php

如果用相對(duì)當(dāng)前文件的路徑在 c 里引入 b,c 里可寫(xiě)作:

include __DIR__.'/../../php/b.php';

采用這種方式,無(wú)論您的 CWD 是哪個(gè)引入路徑都不會(huì)錯(cuò)的。

當(dāng)然了,您如果有固定的入口文件,在里面定義幾個(gè)路徑常量,或預(yù)先設(shè)置好 include_path,后續(xù)代碼的 include 部分會(huì)更干凈些。如您上面的入口總是 a.php 的話(huà),c.php 里想引入 b.php 也可以寫(xiě)作 include 'php/b.php';,這是因?yàn)橥ǔG闆r下,include_path 里會(huì)包含 '.' (當(dāng)前工作目錄)。

膽怯 回答

建立好內(nèi)存表即可,不需要建立一個(gè)server:

//用戶(hù)信息表
$userTable = new swoole_table(1024);
$userTable->column('cmd', swoole_table::TYPE_STRING, 64);
$userTable->column('userId', swoole_table::TYPE_INT, 64);
$userTable->column('room', swoole_table::TYPE_INT, 64);
$userTable->column('group', swoole_table::TYPE_INT, 4);
$userTable->column('userName', swoole_table::TYPE_STRING, 64);
$userTable->column('headImg', swoole_table::TYPE_STRING, 128);
$userTable->column('clientId', swoole_table::TYPE_INT, 4);
$userTable->column('type', swoole_table::TYPE_INT, 4);
$userTable->create();

這就$userTable就可以使用了

安若晴 回答

放出 Laravel5.5 的 nginx 官方推薦配置,其中加上了 https 跳轉(zhuǎn)的代碼,但是 SSL 的其他配置,請(qǐng)自行添加。

server {
    listen 80;
    server_name example.com;
    root /example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";   
    add_header X-XSS-Protection "1; mode=block"; 
    add_header X-Content-Type-Options "nosniff"; 

    index index.html index.htm index.php;

    charset utf-8;
    
    if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; }
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }  
    location = /robots.txt  { access_log off; log_not_found off; }  

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Laravel 5.5 官方推薦 Nginx 配置學(xué)習(xí)

寫(xiě)榮 回答

1.反向遍歷全局符號(hào)表
2.對(duì)符號(hào)表中的每一個(gè)元素應(yīng)用zval_call_destructor函數(shù)
3.判斷符號(hào)表中值的類(lèi)型,如果是對(duì)象,則將其zval置為IS_UNDEF
4.遍歷對(duì)象棧,逐個(gè)執(zhí)行對(duì)象的析構(gòu)函數(shù)

判斷符號(hào)表中的元素的類(lèi)型,如果是對(duì)象,則返回ZEND_HASH_APPLY_REMOVE,后續(xù)清理相應(yīng)的zval,有相應(yīng)的析構(gòu)函數(shù)則執(zhí)行
static int zval_call_destructor(zval *zv) /* {{{ */
{
    if (Z_TYPE_P(zv) == IS_INDIRECT) {
        zv = Z_INDIRECT_P(zv);
    }
    if (Z_TYPE_P(zv) == IS_OBJECT && Z_REFCOUNT_P(zv) == 1) {
        return ZEND_HASH_APPLY_REMOVE;
    } else {
        return ZEND_HASH_APPLY_KEEP;
    }
}

更新---------------------------------------------
在symbol的上一段,設(shè)置了符號(hào)表的析構(gòu)函數(shù)

if (CG(unclean_shutdown)) {
    EG(symbol_table).pDestructor = zend_unclean_zval_ptr_dtor;
}

在反向遍歷符號(hào)表的過(guò)程中,如果引用計(jì)數(shù)減為0,對(duì)其存儲(chǔ)的zval執(zhí)行析構(gòu)函數(shù)
這個(gè)函數(shù)又調(diào)用了zend_objects_store_del
功能是先執(zhí)行對(duì)象的析構(gòu)函數(shù),然后釋放對(duì)象占用的內(nèi)存

厭惡我 回答

es6的object.values方法,直接轉(zhuǎn)換成數(shù)組

陌上花 回答

有mac電腦的話(huà)連上Safari,調(diào)試一下看看

涼薄 回答
  1. https應(yīng)該是簡(jiǎn)單而有效的方法。
  2. 如果你沒(méi)有解決傳輸被偷聽(tīng)的問(wèn)題,那么就必須解決“重放”的問(wèn)題

比如,你將密碼用md5加密后再傳,那別人也可以截獲你md5后的密碼進(jìn)行重放。就算你的密碼不但md5加密了,還用非對(duì)稱(chēng)加密再包一層,別人同樣截獲的是你最終的加密結(jié)果來(lái)重放。

用戶(hù)的密碼是不變的,如何讓一個(gè)“密碼”只能有效一次,是解決重放的關(guān)鍵思路,一般可以用黑白名單的方式來(lái)實(shí)驗(yàn),具體可以自己試試。

另外,登錄成功后使用JWT時(shí),要注意JWT必須有“有效時(shí)間”的判斷,否則,一旦jwt被攔截竊取,會(huì)持續(xù)有效,直到你改secret