PHP $_SESSON mit AJAX wird nicht erkannt

Registriert
Apr. 2011
Beiträge
192
Hallo ;)

wieder mal ein Problem:
vorerst: meine "session_start()" ist vorhanden.

Grundsätzlich möchte ich immer wenn sich meine Selection von der Combobox verändert eine Globale Variable mit AJAX hinaufzählen (kein nutzen, einfach nur um nachher zu erweitern)

Was AJAX Aufruft:
PHP:
<?php
	include 'functions.php';
	if($_REQUEST)
	{
		up();
	}
?>

PHP:
functions.php:
<?php
	function up()
	{
		$_SESSION['var'] = $_SESSION['var'] +1;
		echo $_SESSION['var'];
	}
?>

Mein Problem ist nun: es wird nicht erkannt das eine SESSION gestartet ist und somit ist _SESSION eine undeffinierte Variable.
DANKE :))

LG
Lukas
 
1.) session_start() muss in BEIDEN dateien aufgerufen werden.

2.) wie verwaltest du denn die session_id? per cookie? per url?

3.) nimmt der browser keine cookies an, dann "session.use_only_cookies" in der php.ini auf 0 setzen, SID Konstante an die ajax url ranhängen und fertig.
 
Hi,

bin ich der einzige der denkt dass das Skript bissl überkompliziert ist?

if($_REQUEST) ist unnötig da ohne request das Skript nicht gestartet wird.

$_SESSION['x'] = $_SESSION['x']+1;

lässt sich auch wie folgt formulieren:

++$_SESSION['x'];

Das von AJAX aufgerufene Skript könnte im Grunde aus lediglich folgenden Zeilen bestehen:

Code:
session_start();
++$_SESSION['x'];
 
Danke hab es hinbekommen, das Problem war das beim 2ten Aufruf (mit AJAX) die session erneut gestartet gehört:
PHP:
		if (empty($_SESSION))
		{
			session_start();
		}

Zum ++ das wusste ich - hab nur einen Code raus gelöscht und somit hatte ich so weniger Arbeit - aber danke :)


Danke für die Info bezüglich $_REQUEST das wusste ich nicht :)
 
Code:
if (!$_SESSION){
    session_start();
}

Wenn das Skript ausschließlich durch AJAX aufgerufen wird ist auch die Abfrage if(!$_SESSION) unnötig da die Bedingung bei jedem Aufruf erfüllt wird. Warum also eine Bedingung überprüfen die eindeutig ist?
 
Zuletzt bearbeitet:
Weil du nie weißt, auf welche beknackten Ideen ein User kommen kann...
 
Wenn ein Nutzer das Skript manuell aufruft ist die Bedingung immer noch erfüllt.

Würde hier keinen unterschied machen.
 
Zuletzt bearbeitet:
Ja, aber man könnte dem Script auch ne Abbruchbedingung mitgeben, wenn keine Session gestartet ist. Nur wer eine aktive Session hat, hat überhaupt grundsätzlich das Recht, auf den Inhalt zuzugreifen.
 
Was ohne session_start() nicht überprüft werden kann.

Egal was der TE vor hat, solange die Möglichkeit session_start() zweimal aufzurufen nicht gegeben ist, was bei AJAX request in der Regel der Fall ist, muss session_start() immer aufgerufen werden. Es an Bedingungen zu knüpfen wäre in dem Fall sinnlos, es sei denn das Skript wird beim laden der Seite über php includiert und im weiteren Verlauf durch ajax aufgerufen.

Edit: Wenn über Ajax ein Skript aufgerufen wird das nur ausgeführt wird wenn session_start() schon aufgerufen wurde wird das Skript nie ausgeführt.
 
Zuletzt bearbeitet:
Zurück
Oben