webForumDet fria alternativet

Vad är felet???

5 svar · 242 visningar · startad av Dike

DikeMedlem sedan mars 200314 inlägg
#1

Jag kör en gästbok med ett lätt script som jag hittade på nätet.
Den består av en fil, "gb.php". Koden nedan finns i gb.php...

<?
if ($message)
{
$message = ereg_replace("\r\n\r\n", "\n<P>", $message);
$date = date("l, F j Y, h:i a");
$message = "<B>$name </B> -- $date<P> $message <BR><HR>";
$fp = fopen (basename($PHP_SELF) . ".comment", "a");
fwrite ($fp, $message);
fclose ($fp);
}
@readfile(basename(($PHP_SELF . ".comment")));
?>
<FORM method="post">
<b>Name:</b><BR><INPUT name="name" type="text" size="55"><BR>
<b>Message:</b><BR><TEXTAREA name="message" rows=10 cols=55 wrap=virtual>
</TEXTAREA><BR>
<INPUT name="submit" type="submit" value="Post">
</FORM>

Men när jag ska kolla på sidan så visas:

"Notice: Undefined variable: message in C:\Documents and Settings\semteX\My Documents\webbserver\user\danjel\iowa\gb.php on line 2"

Vad ska jag göra???

UrMeMedlem sedan apr. 2001762 inlägg
#2

variablen $message är inte definierad.

DufferMedlem sedan mars 2003429 inlägg
#3

eftersom att det är en if sats du börjar med måste den ha ngt att gå emot

t.ex. om du hade haft

if($message "inte är *ngt*")
då ska detta hända bla bla bla-...

DarrenMedlem sedan dec. 2002789 inlägg
#4

Ändra register_globals till On i php.ini filen. Observera att du då också skapar visa säkerhetsluckor i php...

Om du inte vill göra det så kan du ändra alla:
$message till $_POST["message"] och
$name till $_POST["name"]

DarrenMedlem sedan dec. 2002789 inlägg
#5

Duffer skrev:

eftersom att det är en if sats du börjar med måste den ha ngt att gå emot

t.ex. om du hade haft

if($message "inte är *ngt*")
då ska detta hända bla bla bla-...

Detta är inte sant...

Om variabel som du kontrollerar innehåller något värde så kommer if($variabel) returnera true och då uppfylls villkoren till if-satsen.

MatteMedlem sedan aug. 20002 975 inlägg
#6

Det första du kan göra är att kolla om variabeln är satt:

if ( isset($message) )

Nu kan det också vara så att du har register_globals satt till Off i din php.ini. Det är numera standard, men tidigare var det för det mesta On. Skriptet kräver On för att fungera.
Då måste du bygga om din kod. Du kan t.ex göra så här:

<?php

if (isset($_POST['message'])) 
{ 
$message = ereg_replace("\r\n\r\n", "\n<P>", $_POST['message']); 
$date = date("l, F j Y, h:i a"); 
$message = "<B>{$_POST['name']} </B> -- $date<P> $message <BR><HR>"; 
$fp = fopen (basename($_SERVER['PHP_SELF']) . ".comment", "a"); 
fwrite ($fp, $message); 
fclose ($fp); 
} 
@readfile(basename(($_SERVER['PHP_SELF'] . ".comment")));
 
?>
134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)