---
title: "Problem med gästbok"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/103271-problem-med-gästbok"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Gorm"
published: "2004-05-09T20:42:02.000Z"
updated: "2004-05-10T10:39:33.000Z"
replies: 9
views: 389
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/103271-problem-med-gästbok"
---

# Problem med gästbok

## #1 — Gorm, 2004-05-09T20:42Z

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

Permalänk: https://www.webforum.nu/p/103271

## #2 — UlfT, 2004-05-09T21:23Z

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.

Permalänk: https://www.webforum.nu/p/1343746

## #3 — Patrik81, 2004-05-09T21:53Z

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

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

till

```php
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\*

Permalänk: https://www.webforum.nu/p/1343761

## #4 — Gorm, 2004-05-09T22:52Z

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

Permalänk: https://www.webforum.nu/p/1343770

## #5 — monAmour, 2004-05-10T06:27Z

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

```php
<?
// Ö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”); 
} 
?>
```

Permalänk: https://www.webforum.nu/p/1343822

## #6 — Gorm, 2004-05-10T09:18Z

Testade den koden men det funkade inte...

Permalänk: https://www.webforum.nu/p/1343869

## #7 — monAmour, 2004-05-10T09:45Z

Vad hände då?

Permalänk: https://www.webforum.nu/p/1343877

## #8 — Gorm, 2004-05-10T10:04Z

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

Permalänk: https://www.webforum.nu/p/1343890

## #9 — monAmour, 2004-05-10T10:30Z

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

Permalänk: https://www.webforum.nu/p/1343895

## #10 — Gorm, 2004-05-10T10:39Z

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("\<", "&lt;", $message);
$message = str_replace("\>", "&gt;", $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");
}

?\>

Permalänk: https://www.webforum.nu/p/1343899

---

Tråden på webben: https://www.webforum.nu/amne/php/103271-problem-med-gästbok
