Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 11520 bytes) in /customers/httpd.www/check.php on line 17
Någon som vet ett bra sätt göra en koll om sessioner finns? Finns de kan man besöka sidan. Annars kommer det upp en text och en automatisk vidarelänkning till index.php görs.. Har försökt med två olika men inget fungerar.
Felmeddelandet betyder att de 8MB internminne ditt skript är tilldelat av webbservern är överskridet.
Kan hända ibland när man kör GD mot stora bilder eller liknande.
För t.ex en inloggningskontroll brukar jag göra följande.
När någon loggar in sätts en sessionsvariabel, låt oss kalla den $_SESSION['variabel'].
Sedan på varje sida som ska skyddas med inloggning använder jag följande:
<?php
session_start();
if (!isset($_SESSION['variabel'])) {
header("Location: index.php");
exit;
}
<? // <-- Översta raden längs till vänster
error_reporting(E_ALL);
ini_set("display_errors", "1");
session_start();
?>
<?
if (!isset($_SESSION['inl_user'])) {
echo "user<br>";
//echo("<script language=JavaScript>");
//echo("self.location.replace('index.html')");
//echo("</script>");
exit;
}
?>
<?
if (!isset($_SESSION['inl_pass'])) {
echo "pass<br>";
//echo("<script language=JavaScript>");
//echo("self.location.replace('index.html')");
//echo("</script>");
exit;
}
?>
<?
if (!isset($_SESSION['inl_id'])) {
echo "id<br>";
//echo("<script language=JavaScript>");
//echo("self.location.replace('index.html')");
//echo("</script>");
exit;
}
?>
och jag får detta:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /customers/httpd.www/db.php:2) in /customers/httpd.www/check.php on line 6
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/httpd.www/db.php:2) in /customers/httpd.www/check.php on line 6
user
Egentligen bara att sessionen redan är startad typ
Tog bort session_start() men det kom inte fram något felmeddelande.. Bara "user". Bytte jag plats så att session[inl_pass] låg överst visades "pass". Behåller den inte värdena eller?
Du kan inte starta upp sessionen och hämta sessionsvariablerna eftersom du har en output till webbläsaren innan session_start().
Denna output sker på rad 2 i db.php.
session_start() är en header och måste sättas innan du gör någon output till webbläsaren.
Med output menas HTML-kod, echo eller print. Även ett mellanslag eller en radbrytning utan för PHP-taggarna genererar en output.
Detta gäller även för filer man inkluderar. Där får man se upp så där inte ligger något osynligt skräptecken efter den avslutande PHP-taggen.
db.php innehåller bara två variabler med databasnamn och databaslösenord.. Använder det för att slippa skriva lösenordet och usern i varje mysql-hämtning. Kom på att db.php innehåller check. Kanske därför det inte fungerar.. La in den för att man inte ska kunna komma db (även om den inte skriver ut något) när man inte är inloggad. Ska jag ta bort check från db? Eller iaf flytta ner den?
Men det verkar ju konstigt att det ska vara fel i db.. Det står att det är line 9 i check som är fel. Dvs, första sessionsraden... Jobbigt när det aldrig kan fungera..
Ta bort alla @ som spärrar felmeddelande. Koppla på all felsökning genom att lägga följande överst i dina skript:
<?php // <-- Översta raden längs till vänster
error_reporting(E_ALL);
ini_set("display_errors", "1");
Tag bort det först då allt fungerar.
db.php
<?php // <-- Översta raden längs till vänster
error_reporting(E_ALL);
ini_set("display_errors", "1");
require("check.php");
$u = "";
$p = "";
?>
check.php
<?php // <-- Översta raden längs till vänster
error_reporting(E_ALL);
ini_set("display_errors", "1");
session_start();
if (!isset($_SESSION['inl_pass'])) {
echo "pass<br>";
//echo("<script language=JavaScript>");
//echo("self.location.replace('index.html')");
//echo("</script>");
exit;
}
if (!isset($_SESSION['inl_user'])) {
echo "user<br>";
//echo("<script language=JavaScript>");
//echo("self.location.replace('index.html')");
//echo("</script>");
exit;
}
if (!isset($_SESSION['inl_id'])) {
echo "id<br>";
//echo("<script language=JavaScript>");
//echo("self.location.replace('index.html')");
//echo("</script>");
exit;
}
?>
inloggning
<?php // <-- Översta raden längs till vänster
error_reporting(E_ALL);
ini_set("display_errors", "1");
session_start()
// Diverse annan kod för att kolla inloggningsvariabler mm.
//Om allt är ok sätt sessionsvariablerna
$_SESSION['inl_user'] = $_POST['loginname'];
$_SESSION['inl_pass'] = $_POST['loginpass'];
$_SESSION['inl_id'] = $data['id'];
Notice: A session had already been started - ignoring session_start() in /customers/httpd.www/check.php on line 6
session_start() finns någonstans tidigare i skriptet.
Inkluderar du db.php i någon fil som har session_start() ?
Notice: Use of undefined constant inl_pass - assumed 'inl_pass' in /customers/httpd.www/check.php on line 8
pass
Betyder att du saknar apostrofer/citationstecken runt ditt array-index. Du har sannolikt skrivit $_SESSION[inl_pass] istället för $_SESSION['inl_pass'].
258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2