Just nu i M3-nätverket
Gå till innehåll

PHP/Webserver Fel...


Gäst Sirsiljas

Rekommendera Poster

Gäst Sirsiljas

Hej!

Jag har problem med min webserver. Varje gång jag ska gå in på index.php så står det i adressfältet (http://localhost/?page=start) och det beror nog på den här koden:

 

---------------------------------------

 

<?

if ((!isset($_GET['page'])) || ($_GET['page'] == "includes/start2")) {

// Om ingen sida är i ?page sa skickas vi till start.php

header("Location: ./?page=start");

}

// Funktionen som inkluderar sidan

function RestenAvsidan($page) {

// Har ar det bara att bygga pa med sidornas namn

if (($page == "start") || ($page == "sida2") || ($page == "sida3")) {

// Inkludera sidan

include($page . ".php");

// En koll till om sidan ar tom.

} elseif ($page == "") {

include("start.php");

} else {

// Om sidan inte existerar vill vi ha en sida som sager det.

include("includes/broken.php");

}

return 0;

}

?>

<html>

<head>

<title>Ett include system</title>

</head>

<body>

<table border=1><tr><td width="150" height="300" valign="top">

<b>Meny</b><br>

<a href="./?page=start">Start</a><br>

<a href="./?page=sida2">Lank 2</a><br>

<a href="./?page=sida3">Lank 3</a><br>

<a href="./?page=brokenpage">En bruten sida</a>

</td><td valign="top" width="200" heigth="300">

<?

// Detta ar koden som skall laggas dar du vill inkludera sidorna.

RestenAvSidan($_GET['page']);

?>

</td></tr></table>

</body>

</html>

 

----------------------------------

 

jag är 99% på att koden är rätt. Vad kan det vara för fel på webservern?

Jag har instalelrar PHP och Apache på min win2k burk, men jag får inte det här att fungera! Snälla kan ni hjälpa mig?

 

mvh

Shadi

 

 

**************************

//Z-|

 

Länk till kommentar
Dela på andra webbplatser

Inte för att jag riktigt vet vad koden ska användas till, men "problemet" som du beskriver orsakas nog av följande:

if ((!isset($_GET['page'])) || ($_GET['page'] == "includes/start2")) { 
// Om ingen sida är i ?page sa skickas vi till start.php 
header("Location: ./?page=start");
} 

 

Det är ju den som redirectar till ?page=start om page inte är satt.

 

Det är alltså inget fel på webbservern, eller koden för den delen. Det är bara så att du/någon programmerat att sidan ska uppföra sig på det sättet.

 

_________

TicoRoman - The One And Only

 

[inlägget ändrat 2003-04-02 22:31:03 av TicoRoman (Almir)]

Länk till kommentar
Dela på andra webbplatser

Gäst Sirsiljas

men om den ska till ?page=start när page inte är sant då bör den ju komma till start.php eftersom koden säger ju:

 

if (($page == "start") || ($page == "sida2") || ($page == "sida3")) {

// Inkludera sidan

include($page . ".php");

 

 

...eller har jag missuppfattat koden?

 

//Z-<

 

**************************

//Z-|

 

Länk till kommentar
Dela på andra webbplatser

...eller har jag missuppfattat koden?
Du måste göra skillnad på vad som står i adressfältet, och vilken sida som verkligen visas.

 

header("Location: ...") anropen skickar dig vidare till en annan adress, medan include("...") inkluderar en fil i skriptet du kör. Alltså, den visar data ifrån en annan fil, men det står en annan adress i ditt adressfält.

 

Så jag skulle säga precis som Almir; det är inget fel alls på skriptet, utan du måste definiera klarare för dig själv vad du vill åstadkomma.

Planering är a och o.

 

Länk till kommentar
Dela på andra webbplatser

Gäst Sirsiljas

jag prövade med den här koden och det blev fel här också. Nu kan det vara fel på koden, men jag förstår inte vad felet är!

 

-------------------------------------

 

<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

 

<body>

 

<?

if($_GET['index'] == "login")

{

if(($_POST['userName'] == "hej") && ($_POST['password'] == "hejhej"))

{

echo "Bra gjort!";

}

else

{

echo "Du loggades inte in =(";

}

}

?>

 

<form method="post" action="index.php?index=login">

UserName:<BR>

<input type="text" name="userName"><BR>

Passwrod:<BR>

<input type="password" name="password"><BR>

<input type="submit" name="LogIn" value="LogIn">

</form>

</body>

</html>

 

---------------------------------

 

den verkar klaga på if($_GET['index'] == "login")

 

 

 

 

**************************

//Z-|

 

Länk till kommentar
Dela på andra webbplatser

Du kanske har "notices" påslagen under Error_reporting. Läs mer i manualen hur du stänger av det.

 

Alternativet är att du hanterar dessa "fel" i koden (vilket man egentligen bör).

Då kan den raden se ut antingen så här:

if (isset($_GET['index']) && $_GET['index'] == 'login')

Eller så här:

if (@$_GET['index'] == 'login')

När du säger att du får ett fel underlättar det om du även klistrar in feltexten du får, det är enklare att lista ut vad som felar då. ;)

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...