Gå til innhold

Gjestebok i PHP


Anbefalte innlegg

Tenkte jeg skulle prøve å lage meg en gjestebok, for å se hvordan det gikk. Jeg skrev PHP-kode for første gang for noen timer siden, og kan ltit basic HTML osv. Ikke store greiene altså, så prøv å hold det litt enkelt hvis du svarer ;)

 

Det å lage selve form-et går greit, men det jeg lurer på er hvordan man lagrer denne teksten som blir skrevet inn? Må en benytte seg av databaser som MySQL og lignende da eller? Eneste jeg vet om hittil er konstanter, men det kan bli litt sprøtt med konstanter hvis jeg får 100+ innlegg.. Blir en god del som må kalles opp...

 

OG en annen ting: Er det noen som vet om noen gode, norske, guider for å lære PHP? Har sett litt på ItPro.no sitt, men det ble litt for avansert og dårlig forklart, har tittet litt på Windows.no sin og leste akkurat igjennom php.senteret.net og ble klokere av det. Finnes det andre, bra guider...?

Lenke til kommentar
Videoannonse
Annonse

Gjestebok er slett ikke noe dårlig prosjekt for å lære seg PHP. Det er flere måter å gjøre dette på, den greieste er å bruke mysql-database, men da er det mere å lære.

 

Det er fullt mulig å lage noe med filer, men da blir det fort mange filer og tregt.

 

La oss starte med å behandle formet.


<form action="behandler.php" method="POST">

<input type="text" name="MinText"/>

<input type="submit"/>

</form>

 

Når du trykker på submit-knappen så vil denne koden laste in behandler.php. I den filen så vil du ha tilgang til teksten igjennom en spesialvariabel som heter $_POST[MinText]. Dette er en array som inneholder alle verdiene som er sendt med post. Det finnes også en $_GET[] variabel hvis du hadde valgt method="GET" i formen.

 

For å åpne en fil for skriving


<?php

$gbfil=fopen("filnavn.gbk", "w");

fwrite($gbfil, "Dette skrives til filen");

fwrite($gbfil, "Det kan være en ide å bruke time() for å lage filnavn slik at du kan sortere innleggene etter det");

fclose($gbfil);

for å åpne en fil for lesing gjør du det samme som over men bruker $gbfil=fopen("filnavn.gbk", "r"); og fread()

 

Da skal du ha alt du trenger til å lage en grunnleggende gjestebok.

 

Selvfølgelig så må du selv velge hvordan du skal dele inn filen din og hvordan du skal separere navn, epost og slikt. XML er en grei ting til slikt.

 

Håper dette hjelper.

Lenke til kommentar

Jeg kan poste den gejsteboken jeg laget for en liten side. Sikkert dårlig kode, men den ble lagd raskt... Den er flatfile-basert, og trenger derfor ingen database.

 

Formen:


<form action="main.php?side=gbook" method="post" name="gbook">

Navn:<br>

<input type="text" size="40" name="navn"><br><br>

E-post:<br>

<input type="text" size="40" name="mail"><br><br>

Hilsen:<br>

<textarea name="content" cols="40" rows="5"></textarea><br>

<input type="submit" value="Legg til" name="send">

</form>

Koden som parser formen:


<?php

if ($HTTP_POST_VARS['content']){

$content = $HTTP_POST_VARS['content'];

// satt $content for noe string replace smileys opplegg. fjernet den delen...

$fp = fopen('pagedata/gbook_submitted','a');

       if(!$fp) {

           echo "Feil ved lagring av hilsenen!";

           exit;

       }

       $line = $HTTP_POST_VARS['mail'] . "|" . $HTTP_POST_VARS['navn'];

       $line .= "|" . $content;

       $line = str_replace("rn","<BR>",$line);

       $line .= "rn";

       fwrite($fp, $line);

       if(!fclose($fp)) {

           echo "Feil ved lukking av fil!";



           exit;

}

}

?>

Koden som viser gjestebok-innskrivningene


<?

//echo tingå

$data = file('pagedata/gbook_submitted');

$data = array_reverse($data);

foreach($data as $element) {

   $element = trim($element);

   $pieces = explode("|", $element);

echo "Navn: <a href="mailto:$pieces[0]">$pieces[1]</a>";

echo "<br>";

echo "Hilsen:<br> $pieces[2]";

echo "<hr>";

}

?>

 

Det var det.

Lenke til kommentar

Heh, valgte heller en løsning jeg mente så enklere ut, og det var å lagre innleggene i en tekstfil :)

 

Og forresten, hvorfor bruke $_POST[Variabel] når en vil hente info utifra et form, en kan jo bare kruke $variabel...?

Lenke til kommentar

Og forresten, hvorfor bruke $_POST[Variabel] når en vil hente info utifra et form, en kan jo bare kruke $variabel...?

 

I de nyere versjoner av PHP er register_globals satt til Off i php.ini, noe som betyr at man blir nødt til å angi hvor variablene kommer fra med $_GET, $_POST, $_SERVER, $_SESSION, $_COOKIE (fler? :p).

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...