foin137 / werwolfonline.eu

www.werwolfonline.eu
http://www.werwolfonline.eu/info
GNU General Public License v3.0
20 stars 11 forks source link

Server settings unclear / Cookies are not persisted #7

Open pzoechner opened 4 years ago

pzoechner commented 4 years ago

Hi,

we successfully set up the game but no cookies are persisted after page reload. Would you mind sharing your PHP server settings and .htaccess?

PS: Thank you for sharing the game!

pzoechner commented 4 years ago

Wir haben das Problem ziemlich sicher identifiziert.

Die Beschreibung von setcookie() auf php.net:

setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including and tags as well as any whitespace.

In der Werwolf.php kommt beinahe immer ein echo() vor einem setcookie() vor. Das dürfte nicht passieren. Dass es trotzdem funktioniert, liegt wohl an der Servereinstellung output_buffering. Der Defaultwert der Option scheint 0 zu sein. Mit dem Wert 4096 ist das "Problem" behoben.

Danke auch an @martinzimmermann!

foin137 commented 4 years ago

Hallo,

ich bin leider bis jetzt noch nicht dazugekommen, dass ich es mir anschaue, daher auch noch keine Antwort zuvor.

Um aber ehrlich zu sein, war mir dieser Umstand mit dem setcookie() nicht bewusst. Ich habe es auch schon auf verschiedenen Serverkonfigurationen laufen gehabt, und es gab nie ein Problem, daher hatte ich auch keine Ahnung, woher der Fehler kommen könnte. Da hab ich bis jetzt wohl immer Glück gehabt!

Danke auf jeden Fall für den Hinweis! Das mit dem output_buffering ist ja wohl eher eine Notlösung. Also es sollte eigentlich geändert werden, dass setcookie() wie empfohlen vor einem Output des Skripts kommt.