Du scheinst nicht verstanden zu haben, wie Sessions funktionieren.
Du rufst session_start() auf. PHP
prüft daraufhin, ob ein Session-Cookie vom Browser an den Server übertragen wurde. Falls nicht, wird eine Zufallszahl erzeugt, als Session-Cookie an den Browser geschickt und auf dem Server wird eine Datei mit der ID als Namen gespeichert. Alles was dann in $_SESSION abgelegt wird, schreibt PHP in diese Datei. Legst du z.B. die User-ID in $_SESSION ab, verlässt dieser Wert niemals den Server. Beim nächsten Request findet wieder ein session_start() statt. Nun ist ein Session-Cookie vorhanden und PHP lädt die Daten aus dem Session-File in $_SESSION.
Wenn nun ein User seinen Session-Cookie manipuliert, kann er das nur auf eine einzige Weise machen: Er verändert die Session-ID. Denn mehr steht in dem Cookie nicht drin und wird von PHP auch nicht ausgewertet. Um eine andere Session zu übernehmen, muss der User deren ID erraten. Das ist aufgrund der Art wie Session-IDs erzeugt werden ein ziemlich aussichtsloses Unterfangen. Eher hat man einen 6er im Lotto, als eine gültige Session-ID zu erraten.
Viele kommen auf die Idee, die IP in der Session zu speichern und wenn die nicht mehr passt, davon auszugehen, dass der User die Session-ID manipuliert hat. Das ist aber Quatsch, denn der User hat wahrscheinlich nur eine Zwangstrennung vom Provider erfahren (reconnect, neue IP). Jedenfalls wahrscheinlicher als Erfolg beim Erraten einer Session-ID.