2011-10-16 12 views
6

Próbuję utworzyć niestandardowy generator identyfikatorów sesji. Z tego, co przeczytałem na stronach, możesz to zrobić ręcznie, edytując pliki ustawień PHP, jednak nie będą one dostępne, dopóki nie przełączysz się z moich udostępnionych serwerów na w pełni konfigurowalny.Sposób generowania niestandardowego identyfikatora sesji bez edytowania pliku php.ini

Próbuję zapytać, czy można określić, w jaki sposób generowane są identyfikatory sesji, wprowadzając kod PHP do strony? Moim zamiarem jest użycie tej samej mechaniki, co domyślny generator identyfikatorów, ale użyj sha512 i kilku niestandardowych gadżetów, takich jak sól.

+3

Dlaczego chcesz tego? Sesje PHP są domyślnie wystarczająco bezpieczne. – TimWolla

+0

Czy Twój problem polega na edycji pliku php.ini? Lub, że nie masz zainstalowanego skrótu, którego szukasz? – hakre

+0

Moim problemem jest to, że nie mogę edytować php.ini na wspólnej stronie hostingowej, ale nieważne, @MVS dostarczył mi odpowiedź, dziękuję. –

Odpowiedz

8

Po przekazaniu ciągu znaków do funkcji session_id() przed wywołaniem session_start() można ustawić identyfikator sesji samodzielnie. Na przykład:

function generate_id() { 
    ... 
    return $your_id; 
} 

session_id(generate_id()); 
session_start(); 
+0

Nie jest to zgodne z ['session_regenerate_id()'] (http://php.net/manual/en/function.session-regenerate-id.php). – hakre

+0

Jest, choć nie jest to bezpośrednie. Być może będę musiał przeprowadzić kilka testów, aby sprawdzić, czy metoda, o której myślę, jest warta użycia, ale jest to możliwe. Dziękuję za troskę. –

+1

Jeśli przekazałeś id do id_sesji i był to identyfikator z poprzedniej sesji, czy session_start kontynuowałby poprzednią sesję, gdyby pliki cookie/get/post nie zawierały żadnych danych PHPSESSID? Pytam, czy możesz przekazać identyfikator sesji ręcznie, zamiast polegać na plikach cookie/get/post. – CMCDragonkai

Powiązane problemy