header und session frage

kela_root

Mitglied
Hi Leute,

auf meiner seite soll ein session stattfinden, die sich merkt, ob der user eine checkbox aktiviert hat oder nicht. wenn man also auf die seite kommt, dann soll erst mal eine kontrolle stattfinden, wie die letzten einstellungenn der checkbox waren(also makiert oder nicht makiert), wenn nicht dann setze die checkbox auf einen default wert, oder es soll nun der entsprechende befehl ausgeführt werden (also wenn die checkbox makiert ist setze showFinished = 1, wenn nich dann setze showFinished = 0).

Wäre super, wenn ihr da nen Vorschlag bzw Tipp hättet.

Dann hab ich noch ein Problem mit dem neusten PHP, was verhindert, das mehrere Header gesendet werden. ich hab die beiden header anweisungen
PHP:
header('Content-Type: text/html; charset=utf-8')
und
PHP:
header("Location: overview.php")

letztere wird nur ausgeführt, wenn der benutzer alle angaben richtig gemacht hat und der erste header wird immer ausgeführt. Wie kann ich diese beiden verbinden?

mfg
 
ich würde es so machen

teil 1 deiner frage:

<input type='checkbox' name='cb' />
auf der empfängerseite wird geguckt ob die variable gesetzt wurde
also
if (isset($_post["cb"] )) {
$cb = 1; // oder was auch immer
}


zu teil 2:

du prüfst einfach die vollständigkeit der daten als erstes
bevor das ganze HTML gerüst erstellt wird

wenn das dann der fall ist schreibst du deine header location
eigentlich ganz simpel oder?
 
also zu teil 1 deiner antworten:

ich will das mit einer session machen, also mit start_session() uns $_SESSION und nicht einfach nur nen isset.

zu 2.

der eine header
PHP:
header('Content-Type: text/html; charset=utf-8')
wird immer gesendet, egal ob der user nun eingaben gemacht hat oder nicht und der zweite header ist sozusagen nur die weiterleitung zu einer seite.

hat noch jemand nen vorschlag?
 
jetzt versteh ich deinproblem nicht sorichtig?
du überprüfst einfach ob der hacken gesetzt wurde und und wenn ja
$_SESSION["cb"] = 1;

dann stehts in deiner session

zu 2.

du packst die weiterleitung in ne if anweisung
die nur ausgeführt wird wenn die daten vollständig ist!

das ist eigentlich so einfach wie nen baby den loly zu klaun
 
sorry, aber irgendwie scheinen wir aneinander vorbei zu reden, ich kann es nur nochmal sagen, php 5 unterstützt nicht, oder besser gesagt verhindert das doppelte senden von header(methoden) und da ja eine header method immer ausgeführt wird, ergibt sich ein problem wenn dann durch die if schleife der 2te header dazu kommt. jetzt verstanden?
 
Ich nutzt PHP 5.1 und bei mir geht es wunderbar.
Außerdem nutze ich auch eine etwas andere Art der Weiterleitung.
(Also per Include)

Du darfst den header nur nicht doppelt senden, also erst eine weiterleitung und dann noch eine andere.

Oder zeig hlt mal dein Script, vielleicht versteh ich dann dein Problem besser.
 
PHP:
	//Speichern der Daten
	if ($validate)
	{

		$update_sql = "UPDATE vorgang SET name = '".$name."',nameProj = '".$nameProj."', purNr ='".$purNr."',
		jira = '".$jira."', exTime = '".$exTime."', exTermin ='".$exTermin."', inTime = '".$inTime."',
 		inReell = '".$inReell."',erledigt = '".$erledigt."', info= '".$info."', status= '".$status."' WHERE id = $id";
		$data_change = mysql_query($update_sql);
		header("Location: overview.php");
		exit();
	}
}
header('Content-Type: text/html; charset=utf-8');
?>

so siehts aus
 
achso, hier wäre mein phpscript für die session, klappt aber leider nicht, denn $showFinished bleibt immer 0, egal ob ich die checkbox makiere oder nicht.
PHP:
$_SESSION['showFinished'] = isset($_REQUEST['showFinished']) ? $_REQUEST['showFinished'] : "";

session_start();

if (isset($_SESSION['showFinished']))
{
	$showFinished = $_SESSION['showFinished'];
	if ($showFinished == "1")
	{
		$showFinished = "1";
	}
	else 
	{
		$showFinished = "0";
	}
}
else 
{
	$showFinished = "0";
}
 
OK beim ersten ist das set nicht ganz richtig bei WHRE id = $ID fehlt ' also WHRER id = '$id'

Nimm statt:
header('Content-Type: text/html; charset=utf-8');
mal den
print("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");

und im zweitenteil rufst du erst ne Session variable auf und dannach startst du die Session?
das kann nicht gehn!

Auserdem Zahlen brauchst du bei einer variblen zuweisung nicht in " " setzten das sind ja keine Strings.
 
Zuletzt bearbeitet:
achso, hier wäre mein phpscript für die session, klappt aber leider nicht, denn $showFinished bleibt immer 0, egal ob ich die checkbox makiere oder nicht.
PHP:
$_SESSION['showFinished'] = isset($_REQUEST['showFinished']) ? $_REQUEST['showFinished'] : "";

session_start();

if (isset($_SESSION['showFinished']))
{
	$showFinished = $_SESSION['showFinished'];
	if ($showFinished == "1")
	{
		$showFinished = "1";
	}
	else 
	{
		$showFinished = "0";
	}
}
else 
{
	$showFinished = "0";
}



Und was hast du mit diesem Code vor?
Du willst erst gucken ob die variable gesetzt ist und tust dann vergleichen ob sie den wert 1 hatt oder?
ich würde es so schreiben:

PHP:
session_start();
if (isset($_REQUEST["showFinished"] && $_REQUEST["showFinished" == 1) {
  $showFinished = 1;
} else {
$showFinished = 0;
}
$_SESSION["showFinished'] = $showFinished;
 
Zuletzt bearbeitet:
Zurück