Just nu i M3-nätverket
Jump to content

PHP/Webserver Fel...


Guest Sirsiljas

Recommended Posts

Guest 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-|

 

Link to comment
Share on other sites

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)]

Link to comment
Share on other sites

Guest 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-|

 

Link to comment
Share on other sites

...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.

 

Link to comment
Share on other sites

Guest 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-|

 

Link to comment
Share on other sites

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å. ;)

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...