28. januar 2004 - 17:38Der er
10 kommentarer og 1 løsning
Include variabler sat efter brugerens input
Hej
Jeg har et problem når jeg includer filer.
Jeg har lavet en side, hvor man på startsiden skal skrive sit navn og sin alder i en formular. Jeg har givet dem henholdsvis alder og navn i 'name' så jeg let kan tilkalde dem med PHP. Jeg har også skrevet følgende i formularen: 'action="side2"'. Derefter har jeg lavet en seperat fil, som jeg includer hvori der står:
Det virker fint når jeg includer filen på side2, og der kan jeg sagtens include ovenstående fil og få brugerens alder og navn vist på siden, men straks når jeg går til side3, og includer akkorat de samme filer, kan jeg ikke længere include ovenstående php fil, og få noget resultat ud af det. Jeg går ud fra at det er fordi action i formularen er sat til side 2, men hvad kan jeg gøre for at få adgang til at bruge $navn og $alder på alle mine sider?
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Jeg fatter overhovedet ikke at bruge manualen, eftersom kun 1% af det der står deri giver mening for mig. Vil det sige at jeg bare skal erstatte $_REQUEST med $_SESSION og så kan jeg bruge den værdi som brugeren indtaster ver hele siden?
Hvis du på en side har en form med 2 input felter, som hedder `navn` og `alder`, kan du på den side formen bliver sendt til gøre følgende: <?php // Starter session session_start();
// Er både navn og alder udfyldt? if ( isset($_POST['navn']) && isset($_POST['alder']) ) { // Registrerer sessions variabler $_SESSION['navn'] = $_POST['navn']; $_SESSION['alder'] = $_POST['alder']; // Udskriv hilsen echo "Hej {$_SESSION['navn']} <p> på {$_SESSION[alder']}"; } else { echo "Navn og/eller alder er ikke udfyldt"; } ?>
På alle de sider du vil gøre brug af de sessions variabler som før blev registreret ($_SESSION['navn'] og $_SESSION['alder']), skal du som det aller første skrive:
Ok, tak for svaret. Kan du kort fortælle hvad forskellen på $_REQUEST og $_POST er? Jeg er vant til at bruge $_REQUEST, så kan jeg bruge det i stedet for $_POST i eksemplet ovenfor?
Problemet er at jeg includer mine sider. Skal jeg så stadig skrive session_start(); på de sider jeg includer på, eller skal det bare stå på den includede side?
Jeg har nu indtastet følgende i den side som jeg includer, som indeholder $_SESSION["navn"] og $_SESSION["alder"] men jeg får følgende meddelelse der hvor jeg includer filen:
Warning: Cannot send session cookie - headers already sent by (output started at /home/mikkel/webs/side2.php:4) in /home/mikkel/webs/includes/navnogalder.php on line 4
Warning: Cannot send session cache limiter - headers already sent (output started at /home/mikkel/webs/side2.php:4) in /home/mikkel/webs/includes/navnogalder.php on line 4 Velkommen tilbage
Hvad kan det skyldes?
Hvis jeg skriver session_start() på den side hvor jeg includer siden med $_SESSION, modtager jeg i stedet følgende meddelelse
Warning: Cannot send session cookie - headers already sent by (output started at /home/mikkel/webs/side2.php:4) in /home/mikkel/webs/side2.php on line 39
Warning: Cannot send session cache limiter - headers already sent (output started at /home/mikkel/webs/side2.php:4) in /home/mikkel/webs/side2.php on line 39
side 2 er den side hvor jeg includer filen som indeholder SESSIONEN på $alder og $navn
1) session_start() skal kun stå på den side hvorfra alt andet bliver inkluderet. 2) Du må ikke lave output til browser før du kalder session_start(): Eksempler hvor det går galt: ----------------------------------------------------------------------------------------- <html> <head> <title>Side1</title> </head> <?php // Her går det galt, da der allerede er sendt html-tags til browseren session_start(); ?> ----------------------------------------------------------------------------------------- <?php // Her går det galt, da php har sendt data som skal udskrives før session_start() er kaldt echo "Velkommen"; session_start(); ?> <html> ... -----------------------------------------------------------------------------------------
<?php // Her går det galt, da der er tomme linjer (i html koden). Det bliver ligeledes fortolket som browser output, pas på med det ----------------------------------------------------------------------------------------- session_start(); ?>
if($_SESSION["navn"] == Mikkel && $_SESSION["password"] == mikkel) { echo "Velkommen tilbage {$_SESSION["navn"]}"; } else { echo "Brugernavn eller adgangskode er forkert"; }
?>
</div>
Det PHP script includer jeg så i side2.php, som formular dokumentet har 'action' på. Og det virker perfekt på side 2. Men så snart jeg går fra side 2 til side 3 skriver den bare adgangskode eller brugernavn er forkert, fordi den slet ikke har fat i inputtet mere. Der er præcis det samme på side2 og side3 og begge har:
<?php session_start(); ?>
i toppen, hvad er det jeg gør forkert, eller mangler at gøre?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.