Avatar billede schjerbeck Nybegynder
16. februar 2007 - 21:42 Der er 25 kommentarer og
1 løsning

Simpel gæstebog i php?

Hej, jeg vil hører om man ikke kan lave en simpel gæstebog i php.
Det eneste krav til den er at der skal være tid på hvornår den er skrevet, og så skal der være sådan man kan skrive et navn ;)?
Avatar billede masik7 Nybegynder
16. februar 2007 - 21:56 #1
Om man kan? Jo, det kan man da sagtens ;).  Har du hørt om noget, der hedder MySQL?
Avatar billede schjerbeck Nybegynder
16. februar 2007 - 21:58 #2
ja :P  men ikke lige noget jeg er super til ;)
-gæstebogens baggrund skal være grå (silver)
Avatar billede Slettet bruger
16. februar 2007 - 22:51 #3
Her er en gæstebog uden db men skal kører på server (f.eks.Apache)- og lagre i en tekstfil:

Opret en mappe >Gbog
Læg denne kode i en fil gaestebog.php
Opret en tom fil gaestebog.txt

kan ikke lige huske hvor jeg har den fra men mener det er Script.dk
..............................

<?php
// Definer navn på txt-fil og tjek at den findes, og hvis ikke, så lav den.
$filnavn = "gaestebog.txt";

if(!file_exists($filnavn)) {

$fp = fopen($filnavn, 'w+');
if ($fp) {
fputs($fp, "");
fclose($fp);
    }
chmod($filnavn, 0777);
}
clearstatcache();

// Er der klikket på submitknappen?
if (isset($_POST['navn'], $_POST['email'], $_POST['homepage'], $_POST['besked'])) {

//hvis textarea-feltet er tomt, er der ingen grund til at skrive noget i textfilen
    if(empty($_POST['besked'])) {
header("Location:". $_SERVER['PHP_SELF'] ."");
exit;
    }

//definerer $felter som et array, for nemmere at kunne "bearbejde" input
$felter = array();

// en foreach til at bearbejde inputs
// 1. Fjerne html tags
// 2. Fjerne alle | tegn da de bruges til at holde info adskilt
// 3. Gøre brug af LJweb\'s tagster
foreach($_POST as $value) {
$value = strip_tags($value);
$value = ereg_replace("(\|)", "", $value);

// LJweb's tagster, som kan findes på "http://ljweb.biz" eller "http://lars.jensen.name"
// Spørg mig IKKE om hvordan den virker, men den virker! :O) (steffen)
  $value = " ".$value;
  $value = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])((ftp|http|https|telnet|news|nttp|nntp|file):\/\/[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+(\\[|\\]|[a-z0-9~#%@\&:;,=\?\/_\+-])+)", "\\1<A HREF=\"\\2\" TARGET=\"_blank\">\\2</A>", $value);
  $value = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])(www\.[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+[a-z0-9~#%@\&:;,=\?\/_\+-]+)", "\\1<A HREF=\"http://\\2\" TARGET=\"_blank\">\\2</A>", $value);

  $value = eregi_replace("([_\.0-9a-z-]+@([0-9a-z-]+)+\.[a-z]{2,4})","<A HREF=\"mailto:\\1\">\\1</A>", $value);
// Slut på tagster


//Undgå at \ bliver sat før ' og " når der skrives til filen
$value = stripslashes($value);

// Bruger array'et $felter
// $felter[0] starter med første input felt, $_POST['navn'], o.s.v.
$felter[] = $value;
    }

//Omdan f.eks. æ til htmlkode, lagt her for ikke at "forstyrre" tagsteren
$felter[0] = htmlentities($felter[0]);
$felter[3] = htmlentities($felter[3]);

// Erstatter entertryk fra textarea'et med en enkelt <br>-tag så linieskift osse vil blive vist
$felter[3] = ereg_replace("(\r\n|\n\r|\n|\r)+", "<br>", $felter[3]);


// Hvis navn $felter[0] ikke er indtastet, skriver vi anonym i stedet
    if(empty($felter[0])) {
$felter[0] = "Anonym";
    }

// finder tidspunkt
$tid=date("d-m-Y : H:i:s",time());

// Den streng som skal skrives til textfilen, startende med tidspunkt og afluttet med en ny linie
$str = $tid ."|". $felter[0] ."|". $felter[1] ."|". $felter[2] ."|". $felter[3] ."\n";   


// Åben txt-filen for skrivning
$fp = fopen($filnavn, 'a+');
if ($fp) {
fputs($fp, $str);
fclose($fp);

    }
//redirecte til filen selv
header("Location:". $_SERVER['PHP_SELF'] ."");
exit;
}
?><html><head><title>G&aelig;stebog</title>
<style type="text/css">
body, td, th {font-family: arial; font-size: 0.8em; color: black; background-color: #F7F4E8;}
a:link {color: #4f0000; text-decoration: underline;}
a:visited {color: black; text-decoration: underline;}
a:hover {color: #4f0000; text-decoration: none;}
a.menu:hover {color: #4f0000; text-decoration: none; background-color: #cfd192;}

.big {font-size: 2.4em;}
.input {color: black; background-color: #ffffff; font-family: arial; font-size: 0.9em; border-color: black; border-width: 1px;}
.submit {font-family: arial; font-size: 0.8em; border-width: 1px; border-color: black;}
.fra {background-color: #999966; color: white;}
.besked {background-color: #eaeaea;  color: black; padding-left: 16px; padding-left: 10px;}
</style>
</head>
<body>
<center>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0" width="70%" cellspacing="0" cellpadding="4"><tr>
    <td class="big" align="center">G&aelig;stebog</td>
</tr><tr>
    <td align="center" style="border-bottom: solid black; border-width: 1px;"><table border="0" cellspacing="0" cellpadding="4"><tr>

<td>Dit navn:<br>
<input type="text" name="navn" size="24" class="input"></td>
<td>Din email:<br>
<input type="text" name="email" size="24" class="input"></td>
</tr><tr>
<td colspan="2">Din hjemmeside:<br>
<input type="text" name="homepage" size="52" value="http://" class="input"></td>
</tr><tr>
<td colspan="2" align="center"><textarea cols="48" rows="8" name="besked" class="input"></textarea><br>
<input type="submit" value="Tilf&oslash;j indl&aelig;g" class="submit"></td>

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

</tr><?php

$indhold = file($filnavn);

// for-løkke til at hente hver linie ud af txt-filen.
// Startende med sidste linie først! Tak til jakoba og tipsen fra eksperten for hjælp
for ($i = count($indhold)-1; $i >=0; $i--) {

// Del hver linie op efter " | " og "ignorer" nylinie tegn, "chop"
$vis = split("\|", chop($indhold[$i]));

// Lav output
echo"<tr>\n";
echo"    <td class=\"fra\" style=\"border-left: solid black; border-right: solid black; border-width: 1px;\">Indl&aelig;g af ". $vis[1] ." d. ". $vis[0] ." &nbsp; &nbsp; Email: ". $vis[2] ." &nbsp; &nbsp; ". $vis[3] ."</td>\n";
echo"</tr><tr>\n";
echo"    <td class=\"besked\" style=\"border-left: solid black; border-right: solid black; border-bottom: solid black; border-width: 1px;\">". $vis[4] ."</td>\n";
echo"</tr>";
    }
?></table>
</form>
</center>
</body></html>
Avatar billede schjerbeck Nybegynder
16. februar 2007 - 22:57 #4
kan man godt bruge den på frac :P?

- har lige prøvet den og der kommer til at stå det her når man trykker tilføj indlæg:

Warning: fopen(gaestebog.txt) [function.fopen]: failed to open stream: Permission denied in /web/www/frac/users/s/schjerhair/Gbog/gaestebog.php on line 75

Warning: Cannot modify header information - headers already sent by (output started at /web/www/frac/users/s/schjerhair/Gbog/gaestebog.php:75) in /web/www/frac/users/s/schjerhair/Gbog/gaestebog.php on line 82
Avatar billede Slettet bruger
16. februar 2007 - 23:02 #5
Jeg ved ikke om der er noget specielt på frac.- jeg har på et tidspunkt kørt den på cliche uden problemer - har lige kørt den her localt og der virker den fint.

Prøver lige selv at lægge den op på frac - så vender jeg tilbage
Avatar billede Slettet bruger
16. februar 2007 - 23:10 #7
Den virker fint på frac

du kan se den her ....  http://www.ibbo.frac.dk/gbog/gaestebog.php
Avatar billede Slettet bruger
16. februar 2007 - 23:20 #8
Du har ret der er problemer når den skal skrive til .txt filen

ved ikke lige hvor det er !!!!!
Avatar billede hmortensen Nybegynder
17. februar 2007 - 00:52 #9
Har i husket at chmod'e filen. Så vidt jeg kan se, behøver man ikke oprette txt filen selv. Faktisk hvis man ikke gør, vil den selv sætte rettigheder. Så prøv at slette txt filen og kør scriptet igen.
Avatar billede Slettet bruger
17. februar 2007 - 09:59 #10
cdmod gaestebog.txt til 777 - så kører det for dig

Bemærk også at store og små bogstaver i fil og mappenavne ikke er ligegyldige

Nej... tekstfilen oprettes ikke automatisk
Avatar billede hmortensen Nybegynder
17. februar 2007 - 10:35 #11
Jeg skulle da mene at den her stump opretter filen og sætter rettigheder, hvis den ikke findes...

if(!file_exists($filnavn)) {

$fp = fopen($filnavn, 'w+');
if ($fp) {
fputs($fp, "");
fclose($fp);
    }
chmod($filnavn, 0777);
}
Avatar billede schjerbeck Nybegynder
20. februar 2007 - 14:01 #12
Hvad mender du med at cdmod filen? :P
Avatar billede simplus Nybegynder
20. februar 2007 - 14:08 #13
Det hedder CHMOD og ikke CDMOD. Når du CHMOD'er en fil, sætter du bare rettighederne til den. Jeg ville som der før er foreslået bruge 777 hvilket giver alle rettigheder.
Avatar billede schjerbeck Nybegynder
20. februar 2007 - 15:11 #14
okay, men jeg ved ikke helt hvordan man gør det :P?
Avatar billede simplus Nybegynder
20. februar 2007 - 15:19 #15
Således:

chmod($filnavn, 0777);

det fremgår også i hmortenses exempel
Avatar billede Slettet bruger
20. februar 2007 - 15:41 #16
Selvfølgelig hedder det chmod, det må i virkelig meget undskylde og det kan også skabe en vis forvirring
 
Når du har upload dine filer til serveren - bruger du dit ftp-program til at chmod din fil gaestebog.php ved at højreklikke på filen og vælge <egenskaber> der vil så fremkomme en popup hvor der sikkert er mulighed for at skrive 777 i et felt ellers skal du bare klikke (sætte flueben) i alle felterne
Avatar billede mccookie Seniormester
20. februar 2007 - 16:11 #17
.
Avatar billede Slettet bruger
24. februar 2007 - 16:07 #18
Fik du det til at virke ?????

Er du klar til at accepterer og lukke ?????
Avatar billede schjerbeck Nybegynder
24. februar 2007 - 17:13 #19
ja, men hvordan kan det være at koden virker når man gør det med 777 :P?
Avatar billede Slettet bruger
24. februar 2007 - 17:44 #20
Du giver rettigheder til at skrive til filen
Avatar billede Slettet bruger
24. februar 2007 - 20:26 #21
Her er en nærmere uddybning af CHMOD

http://www.netexplorer.dk/DIVERSE_ARTIKLER/03-chmod.php

Så er vist klar til at accepterer svar og lukke spørgsmålet
Avatar billede schjerbeck Nybegynder
25. februar 2007 - 22:33 #22
ja, har accepteret nu.

Men det er ikke sådan du lige ved hvordan man får et logo oppe i hjørnet ligesom på det fleste sider, her på eksperten er der jo det der "e"
Avatar billede schjerbeck Nybegynder
25. februar 2007 - 22:33 #23
og tak ;)
Avatar billede Slettet bruger
25. februar 2007 - 22:46 #24
Så må du lie lægge et link til din hjemmeside, så jeg kan se din kode
Avatar billede schjerbeck Nybegynder
26. februar 2007 - 22:05 #25
det er bare det der lille logo oppe i adresselinjen jeg snakker om ?
Avatar billede Slettet bruger
26. februar 2007 - 23:00 #26
Det hedder et favicon.ico - det kan du nemmest lave ved at nedenstående link og lave dit eget icon udfra et billed som du henter fra din computer ved at hente det ind via >Gennemse derefter trykker du på >Generate FavIcon.ico - så kan du se det og afprøve hvordan det ser ud og derefter downloade det.

http://www.htmlkit.com/go/favicon 

Det færdige icon skal have navnet favicon.ico
Det skal så have sat det ind på din side og der skal koden være:

<link rel="shortcut icon" href="favicon.ico" >

og den kode skal sættes ind i mellem <head> ... </head>

i dit tilfælde med gæstebogen skal det stå her efter

?><html><head><title>G&aelig;stebog</title>
<link rel="shortcut icon" href="favicon.ico" >
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester