Okay, mein Code sollte die Seite ID mit $ _GET ['pid'] greifen und überprüfen, ob es gleich $ _SESSION ['Seite'] ist. Wenn es die $ _SESSION ['page'] behält, zerstöre die $ _SESSION ['page'] nicht.PHP Session Probleme
Aber aus irgendeinem Grund, wenn ich die Funktion von einer anderen Seite mit einem include() aufrufen, hat die $ _SESSION ['page'] einen anderen Wert als eine andere Seite, wenn neu geladen? Was verursacht dieses Problem und wie kann ich es beheben?
Hier ist mein unset $ _SESSION ['Seite'] Code.
<?php
ob_start();
session_start();
if(isset($_GET['pid']) && is_numeric($_GET['pid'])) {
if(isset($_SESSION['page']) && $_SESSION['page'] !== $_GET['pid']){
unset($_SESSION['page']);
}
$page = mysqli_real_escape_string($mysqli, htmlentities(strip_tags($_GET['pid'])));
$_SESSION['page'] = $page;
}
ob_flush();
?>
Ich bezeichne diese Funktion von einem anderen Skript
<?php
ob_start();
session_start();
function getRatingText(){
$dbc = mysqli_connect("localhost", "db", "pass", "members");
$sql1 = "SELECT COUNT(ab_g.u_ab_id) FROM ab_g INNER JOIN u ON ab_g.user_id = u.user_id WHERE u_ab_id = '" . $_SESSION['page'] . "' AND u.active IS NULL AND u.deletion = 0";
$result = mysqli_query($dbc,$sql1);
if (!mysqli_query($dbc, $sql1)) {
trigger_error(mysqli_error($dbc));
return;
} else {
while($row = mysqli_fetch_array($result)) {
$tr[] = $row[0];
}
}
if(isset($tr) && count($tr) != 0){ $rat = array_sum($tr); }
$sql2 = "SELECT g.rate_points FROM g INNER JOIN ab_g ON g.id = ab_g.rate_id INNER JOIN u ON ab_g.user_id = u.user_id WHERE ab_g.u_ab_id = '" . $_SESSION['page'] . "' AND u.active IS NULL AND u.deletion = 0";
$result = mysqli_query($dbc, $sql2);
if(!mysqli_query($dbc, $sql2)) {
trigger_error(mysqli_error($dbc));
return;
} else {
while($row = mysqli_fetch_array($result)) {
$trp[] = $row[0];
}
}
if(isset($trp) && count($trp) != 0){ $tot = array_sum($trp); }
if (!empty($tot) && !empty($rat)){
$avg = round($tot/$rat, 1);
$percent = round(($avg/5) * 100, 1);
$votes = $rat;
if($rat == 1){
echo $avg . "/5 (" . $votes . " rating casted)";
} else {
echo $avg . "/5 (" . $votes . " casted)";
}
if($avg <= 5){ $rate = '5 star'; }
if($avg <= 4){ $rate = '4 star'; }
if($avg <= 3){ $rate = '3 star'; }
if($avg <= 2){ $rate = '2 star'; }
if($avg <= 1){ $rate = '1 star'; }
echo $rate;
} else {
echo 'not rating';
}
return TRUE;
}
ob_flush();
?>
ich dieses Problem gelöst, indem die an der Unterseitesession_write_close();
innerhalb der Funktion Skript setzt. vor ob_flush().
Sie haben session_start in Ihrer Datei? http://php.net/manual/en/function.session-start.php –
@Haim Evgi natürlich – HELP
Wann ist die '$ _SESSION ['page']' anders, wenn Sie mit einem gültigen 'pid' auf die Seite zugreifen oder nicht? –