2010-10-23 13 views
7

Ho copiato un sito esistente e in esecuzione con successo su un nuovo server di sviluppo.Impossibile modificare il nome del cookie della sessione php

L'account di accesso sul nuovo server ora è rotto, e ho rintracciato verso il basso per il fatto che, sebbene il cookie di sessione viene rinominato ...

ini_set('session.name', 'DOMAIN1'); 

... il browser mantiene memorizzare il cookie sesssion come PHPSESSID.

Quando rimuovo la riga sopra dall'applicazione sul nuovo server, il login funziona di nuovo. Ma questa non è una buona soluzione, perché un'altra applicazione usa anche PHPSESSID sotto questo nome.

E preferirei trovare il motivo dello strano comportamento invece di utilizzare una soluzione alternativa. Se non lo aggiusto, potrebbe mordermi da qualche altra parte.

Forse questo è già abbastanza informazioni per qualcuno a darmi un suggerimento. In caso contrario, quali informazioni sarebbero utili?

Questa macchina era un server Ubuntu 8.04 molto nudo e basilare, e ho installato apache2, mysql e php5 con aptitude. Ho anche aggiornato i lokales e il fuso orario.

Soluzione:

ho sostituito la linea di cui sopra con questo codice da dalla risposta accettata ...

if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1')) 
{ 
    die('Unable to set sesssion scope'); 
} 

... e il login ora lavora sul nuovo server.

risposta

8

A volte ini_set viene riprodotto e non è possibile impostare correttamente i valori ini, potrebbe essere verso il basso per le autorizzazioni.

il seguente non risolve completamente il problema con ini_set e se qualcuno conosce i motivi per cui lo ini_set non funziona su alcuni tipi di host, quindi si prega di condividere!

Provare quanto segue:

<? 
if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1')) 
{ 
    die('Unable to set sesssion scope'); 
} 

phpinfo(); 
?> 

in alternativa, si può semplicemente utilizzare session_name() per impostarlo, e mal consigliare sempre di non funzioni basta eseguire e spero che il controllare sempre l'in un'istruzione if e prepararsi al peggio caso caso, questo è quando la tua applicazione diventa affidabile e meno error_prone.

+2

No, ini_set() non dovrebbe modificare il file INI: vedere http://php.net/ini_set Altrimenti sarebbe una grande potenziale violazione della sicurezza. – mojuba

+0

Sì spiacente, solo runtime :) – RobertPitt

+0

Grazie, dopo ore di ricerca, finalmente funziona. Ho sostituito il codice precedente con le 4 linee del tuo esempio e l'ho risolto! – mit

Problemi correlati