webForumDet fria alternativet

Problem med gästbok

9 svar · 389 visningar · startad av Gorm

GormMedlem sedan maj 20046 inlägg
#1

Hej

Jag har följt diskussionerna här ett tag men det är först nu som jag skriver mitt första inlägg.

Jag håller på att lägga upp en gästbok på min hemsida. Jag använder mig av en kod från Internetworld.

Gästboksinläggen sparas i en textfil. När en besökare skriver i en URL under ”URL” och man sedan klickar på den när inlägget har blivit uppladdat så öppnas den i samma fönster. Jag vill att den ska öppnas i ett nytt fönster (typ target="_blank"). Det andra problemet är att jag vill att det senaste inlägget skall hamna överst, inte längst ner som det är nu.

Här är koden:

<!-- Allt här ovan kan du lätt redigera så att det passar din
hemsida - nu börjar php-koden --> <?
$filename = ”guestbook.txt”;
// se till att filnamnet här ovan stämmer med den textfil du gjort

if ($name) {
$message = str_replace(”<”, ”<”, $message);
$message = str_replace(”>”, ”>”, $message);
$message = str_replace(”\n”, ”<br>\n”, $message);

// Se till att http:// finns i url:en.
if (!(substr($url, 0, 7) == ”http://”))

$url = ”http://” . $url;

// Öppna filen i ”append”-läge
if ($fd = (fopen($filename, ”a”))) {
// Skriv i filen
fwrite($fd, ”Från: $name<br>\n”);
fwrite($fd, ”E-post: <a href=\”mailto:$email\”>$email</a><br>\n”);
fwrite($fd, ”URL: <a href=\”$url\” >$url</a><p>\n”);
fwrite($fd, $message);
fwrite($fd, ”\n<hr>\n”);
fclose($fd);
} else {
print(”ERROR: cannot open $filename for writing\n”);
}

}

// Öppna filen i ”read”-läge
if ($fd = (fopen($filename, ”r”))) {
$contents = fread ($fd, filesize ($filename));
fclose ($fd);
// Skriv ut filen i html-dokumentet
print($contents);
} else {
print(”ERROR: cannot open $filename for reading\n”);
}
?>

Tacksam för svar

/Johan

UlfTMedlem sedan maj 20016 050 inlägg
#2

Enligt php.net kan man gå till filens början med hjälp av fseek() eller rewind(). Men så som jag förstod manualen där, kommer ny text i alla fall läggas till i slutet på filen. Vad du borde fundera över, är om du inte skulle kunna använda en databas (du kanske kan använda MySQL eller Access på din hemsida). Då lägger du in varje ny gästboknotis på en egen rad i en tabell i databasen. När du ska skriva ut inläggen, kan du enkelt sortera dem i vilken ordning du vill.

Patrik81Medlem sedan okt. 2001537 inlägg
#3

Och för att öppna adressen i ett nytt fönster skulle jag kunna tänka mig att om man ändrar denna raden

fwrite($fd, ”URL: <a href=\”$url\” >$url</a><p>\n”);

till

fwrite($fd, ”URL: <a href=\”$url\” target=\"_blank\">$url</a><p>\n”);

så skall nog det problemet ordna sig.
(Otestat men verkar logiskt) :)

MVH Patrik

/r: Nu escape:ade naturligtvis webforum mina backslashar, och jag vet inte riktigt hur jag skall få dit dem...

target="_blank" skall ju ivarjefall vara target=\"_blank\" (och likadant runt $url)

Kanske funkar bättre om jag använder vanliga kod-taggen?

fwrite($fd, ”URL: <a href=\”$url\” target=\"_blank\">$url</a><p>\n”);

*håller tummarna*

GormMedlem sedan maj 20046 inlägg
#4

länkningen fungerade... tackar... jag hade testat nåt liknande men med en backslash för lite. :)

monAmourMedlem sedan dec. 2002270 inlägg
#5

Testa nåt sånt här för att få det senaste överst:

<?
// Öppna filen i ”read”-läge 
if ($fd = (fopen($filename, ”r”))) { 
$contents = fread ($fd, filesize ($filename)); 
fclose ($fd); 

$posts = explode("\n<hr>\n", $contents);
if (sizeOf($posts) <= 0) {
echo("Det finns inga inlägg i gästboken!");
}
else {
$posts_rev = array_reverse($posts);
foreach($posts_rev AS $post) {
echo($post."\n<hr>\n");
}

} else { 
print(”ERROR: cannot open $filename for reading\n”); 
} 
?>
GormMedlem sedan maj 20046 inlägg
#6

Testade den koden men det funkade inte...

monAmourMedlem sedan dec. 2002270 inlägg
#7

Vad hände då?

GormMedlem sedan maj 20046 inlägg
#8

Det kommer bara ett felmeddelande istället för gästboken.

monAmourMedlem sedan dec. 2002270 inlägg
#9

Du får ju gärna berätta vad det står i felmeddelandet så kan man kanske hjälpa vidare...................

GormMedlem sedan maj 20046 inlägg
#10

Har lyckats få det att fungera hjälpligt. Nu kommer senaste inlägget först, men delar av det som är under försvinner. Dessutom så dyker inte inlägget upp automatiskt utan man måste ladda om hela gästboken.

<?
$filename = "guestbook.txt";
// se till att filnamnet här ovan stämmer med den textfil du gjort

if ($name) {
$message = str_replace("<", "<", $message);
$message = str_replace(">", ">", $message);
$message = str_replace("\n", "<br>\n", $message);

// Se till att http:// finns i url:en.
if (!(substr($url, 0, 7) == "http://"))

$url = "http://" . $url;

if ($fd = (fopen($filename, "r+"))) {

// Läs befintligt innehåll i filen
$content = fread($fd, filesize($filename));

// Flytta tillbaka filpekaren till början av filen
rewind($fd);

// Skriv in det nya i filen
fwrite($fd, "Från: <b>$name</b><br>\n");
fwrite($fd, "E-post: <a href=\"mailto:$email\">$email</a><br>\n");
fwrite($fd, "URL: <a href=\"$url\" target=\"_blank\">$url</a><p>\n");
fwrite($fd, $message);
fwrite($fd, "\n<hr>\n");

// Skriv tillbaka det gamla
fwrite($fd, $content);

fclose($fd);

} else {

print("<B>ERROR: cannot open $filename for writing\n");

}

}

// Öppna filen i "read"-läge
if ($fd = (fopen($filename, "r"))) {
$contents = fread ($fd, filesize ($filename));
fclose ($fd);
// Skriv ut filen i html-dokumentet
print($contents);
} else {
print("<B>ERROR: cannot open $filename for reading\n");
}

?>

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb