2013-06-06 16 views
7

Sto refactoring del codice e ho trovato qualcosa che non ho mai visto. la funzione viene utilizzata per l'utente di impostare cookie quando utente accede a:Impostazione cookie utilizzando l'intestazione ("Set-cookie") vs funzione setcookie()

function setUserCookie($name, $value) { 
    $date = date("D, d M Y H:i:s",strtotime('1 January 2015')) . 'GMT'; 
    header("Set-Cookie: {$name}={$value}; EXPIRES{$date};"); 
    } 

ora che sono stato assegnato il refactoring del codice Sto progettando di utilizzare setcookie funzione che fa sostanzialmente la stessa cosa secondo la php.net.

La mia domanda è: c'è qualche differenza tra due e quale dovrei usare?

NOTA: questo codice è stato scritto molto tempo fa, quindi presumo che in quel momento non esistesse setcookie?

+0

È possibile trovare ['nuovo cookie ($ nome)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L51) utile, come trovato in [questa libreria standalone] (https://github.com/delight-im/PHP-Cookie). Quindi questa è una terza opzione per l'impostazione dei cookie. Onestamente, non impostare mai direttamente l'intestazione HTTP. Usa la funzione PHP integrata o il costruttore qui citato per impostare i cookie con valori di escape appropriati usando i valori di intestazione che vengono creati automaticamente. – caw

risposta

3

Non c'è una buona ragione per non utilizzare setcookie. Il codice precedente non codifica correttamente nomi e valori, quindi questo è almeno uno dei principali vantaggi del refactoring.

+0

setcookie() non supera il 2038 sui sistemi a 32 bit. È un problema per i server Web su piattaforme embedded (non verranno aggiornati). – Simon

1

La differenza tra le due funzioni è che header() è la funzione generale per l'impostazione di intestazioni HTTP mentre setcookie() è specificamente progettato per impostare l'intestazione Set-Cookie.

header() pertanto accetta una stringa contenente l'intestazione completa, mentre setcookie() accetta diversi argomenti specifici per cookie e quindi crea l'intestazione Set-Cookie da essi.