Avatar billede curtain Nybegynder
12. marts 2004 - 14:46 Der er 10 kommentarer og
1 løsning

Problemer med include

Hej

Jeg bruger følg. metode, til at include mine sider/filer på:


<a href="index.php?side=forside">til forsiden (intro)</a><br>
<a href="index.php?side=login">til login siden </a><br>
<a href="index.php?side=side3">til side 3 (om eiffeltårnet)</a><br>

du henter så url-parameteren via $_GET

<?php
session_start();
?>

<html>
<head>
<title>SITES</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>
<div id="loginright">
<?php
include("login/fake.php");
?>
</div>
<div id="titel">
<h2><div class="hoved">SITES</div></h2>
</div>

<div id="indhold">
<?
if ( isset( $_GET['side'] ) ) {
    $side = $_GET['side'];
} else {
    $side = 0;      // defaukt til folk blot skriver "index.php" uden parameter
}
switch ( $side ) {
    case forside:  include( "dinforside.txt" );
            break;
    case login:  include( "login.txt" );
            break;
    // osv osv alle dine sider med hver deres nummer
    default echo "Der blev angivet et sidenummer som ikke findes.";
}
?>
</div>
<?php
include("includes/leftmenu.html");
?>
</body>
</html>


Mit problem er så, at jeg nu har en formular på en af de includede sider, som jeg vil have skal sende brugeren videre til eks. index.php?side=login. Hvis jeg skriver det i action feltet på formularen, bliver brugeren jo sendt til index.php, men eftersom login ikke er sat, vil forsiden blive included.
Hvad kan jeg gøre?
Avatar billede dennismp Nybegynder
12. marts 2004 - 15:56 #1
Istedet for at bruge $_GET kunne du jo bruge $_REQUEST .. og så lave en hidden field i din form:
<input type="hidden" name="side" value="login">

så vil dit problem være løst, tror jeg.
Avatar billede curtain Nybegynder
12. marts 2004 - 21:05 #2
Det virker ikke i mit tilfælde:

Jeg har tilføjet følg. til siden som tjekker hvilke sider der skal includes:

<?php
session_start();
?>

<html>
<head>
<title>SITES</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>
<div id="loginright">
<?php
include("login/fake.php");
?>
</div>
<div id="titel">
<h2><div class="hoved">SITES</div></h2>
</div>

<div id="indhold">
<?
if ( isset( $_REQUEST['side'] ) ) {
    $side = $_REQUEST['side'];
} else {
    $side = 0;      // defaukt til folk blot skriver "index.php" uden parameter
}
switch ( $side ) {
    case forside:  include( "dinforside.txt" );
            break;
    case login:  include( "login.txt" );
            break;
    case login_chech: include("login_check.php");
            break;         
    // osv osv alle dine sider med hver deres nummer
    default echo "Der blev angivet et sidenummer som ikke findes.";
}
?>
</div>
<?php
include("includes/leftmenu.html");
?>
</body>
</html>



Jeg har ligeledes tilføjet:

<input type="hidden" name="side" value="login_check">

til min php kode, så den nu ser således ud:

<input type="hidden" name="side" value="login_check">

<?
//php kode
?>
Avatar billede dennismp Nybegynder
12. marts 2004 - 21:25 #3
case login_chech: include("login_check.php");
ændr det til:
case login_check: include("login_check.php");
Avatar billede curtain Nybegynder
13. marts 2004 - 09:51 #4
Det virker stadigvæk ikke... Men der er ikke noget egentligt link til login_check siden. Man bliver sendt til den hvis man trykker på submit knappen; login. Er der noget andet jeg kan gøre?
Avatar billede curtain Nybegynder
13. marts 2004 - 09:55 #5
Jeg kan samtidig se, at når jeg trykker på login submit knappen, som sender brugeren til login_check, står der i adressen følg: index2.php?login_check
Hvorimod der på de andre sider står eks: index2.php?side=forum
Altså, side= mangler, hvorfor?
Avatar billede dennismp Nybegynder
13. marts 2004 - 13:47 #6
Hvordan ser din form ud?
Avatar billede curtain Nybegynder
14. marts 2004 - 12:00 #7
således:

<form action='.../index2.php?side=opret' method='post'>
  <input type='text name='side' value='opret'>
</form>
Avatar billede dennismp Nybegynder
14. marts 2004 - 12:05 #8
jeg ville bruge:
<form action='index2.php' method='post'>
  <input type="hidden" name="side" value="opret">
  <input type='text name='side' value='opret'>
</form>

ingen grund til at blande GET og POST sammen, imho
Avatar billede curtain Nybegynder
14. marts 2004 - 12:09 #9
hvis jeg skriver link?side=opret i action på formularen, så kan jeg jo altid på de vil der i URL'en komme til at stå: http://link?side=opret/ så kan jeg jo altid på den anden side, hente værdien af side ( opret ), med GET ikke?
Avatar billede dennismp Nybegynder
14. marts 2004 - 12:15 #10
Jow. Men for lang tid siden havde jeg en del problmer med, at netscape (!) ikke ville være med til at bruge GET og POST på samme tid. Jeg aner ikke om det stadig gælder - men jeg undgår det - kan ikke se fordelen alligevel.

Men ellers prøv at printe $_REQUEST ud (med fx. print_r). ligefør din switch()-statement.. Så kan du se om du har en variable "side" og om den er sat til noget rigtigt.
Avatar billede curtain Nybegynder
14. marts 2004 - 12:21 #11
nu virker det med begge metoder :-D  tak for indlægene
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester