Gæstebogen - tutorialen samt div ift.

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
Brian
Begynder
Indlæg:7
Tilmeldt:21. mar 2012, 15:23
Gæstebogen - tutorialen samt div ift.

Indlæg af Brian » 21. mar 2012, 20:38

Hey Forum

Da dette (Gæstebogen) værende mit første møde med PHP og allerede er løbet ind i problemer/-opgaver vil nogen sige, er dette så også mit første - af sikkert mange indlæg her i forum. :D
Har set og læst indlægget toxen http://www.nemprogrammering.dk/forum/vi ... p?f=4&t=62 har skrevet vedr. Gæstebog, men hjalp mig ikke meget, tværtimod blev jeg mere forvirret, så tillod mig at oprette en tråd selv om samme emne.

Mit første spørgsmål går på om hvorfor man hopper videre til en blank side - eller det ved jeg jo sådan set godt, da den jo bare gør hvad den får besked på, men hvordan, eller med andre ord; hvad skal jeg ændre så man bliver på samme side og bare opdatere selv, ved tryk på "Send", for må da være muligt? Allan - (fra kommentar under tutorialen) er inde på at han ikke havde fået lavet en echo, så deraf den blanke side, men har ingensteder kunne finde hvordan/hvorledes man skal skrive det der echo for at undlade den blanke side?...

Har søgt Google side op og side ned, men ikke fundet alt jeg søger, er dog lykkes mig at få dato/tid sat ind også, space mellem Navn og dato/tid, samt ny linie for hvert indput i selve Gæstebogen, men ville gerne have at "Navn" blevet skrevet med fed skrift i selve .txt filen - har prøvet mange ting i form af forsekellige kommandoer, såsom <b></b> - <strong></strong> - forskellige steder, men ligemeget hvad, eller hvor viser den at det er en fejl - så nogen der lige ved det?

For at vende tilbage til toxen's indlæg hvor i er inde på "stier" til de forskellige filers placering, da jeg selv ønsker at have de to filer; guestbook.txt og "SkrivTil.php" liggende i en mappe kaldet "txt" og kun "VisIndhold.php" (selve siden) liggende i roden - men ligemeget hvad jeg gør ift. at ændre det i stierne, så virker det ikke - så hvad går der lige galt? (pt. ligger det hele i roden)


VisIndhold:

Kode: Vælg alt

<div id="middle_box_3" style="height: auto; margin-bottom: 16px;">
  <div align="center">
    <table width="350" border="0">
      <tr>
        <td><form action="guest_book.php" method="POST">
            <div align="center"><b>Navn</b> :<br/> <input type="text" name="fornavn"/><br/><br/>
              <b>Kommentar</b> :<br/> 
              <textarea name="kommentar"></textarea><br/><br/>
              <input type="submit" value="SEND"/>
            </div>
            </form></td>
        </tr>
    </table>
  </div>
</div>

<div id="middle_box_4" style=" overflow: auto; height: 450px; margin-bottom: 50px; border: 1px solid #000; padding: 8px;">
        <?php
       $fil = fopen("guestbook.txt", "r") or exit("Kunne ikke finde filen");

       while(!feof($fil)){
           echo fgets($fil) ."<br/>";
       }
       fclose($fil);
        ?>
</div>
SkrivTil:

Kode: Vælg alt

        <?php
		ini_set('date.timezone', 'Europe/Copenhagen');
$navn = $_POST["fornavn"]." ".date("d-m-Y # H:i:s");
$kommentar = $_POST["kommentar"];

$fil = fopen("guestbook.txt", "a+") or exit("Kunne ikke finde filen");

fwrite($fil , $navn."\n".$kommentar."\n"."\n");

fclose($fil);


        ?>
Vil slutte med at spørger om det er muligt at få nye indlæg i Gæstebogen til at ligge sig i toppen hver gang, så man ikke skal scrolle ned for at se sidste nye indlæg? (eller det måske for meget forlangt af en simpel .txt Gæstebog?) :o

Sidst men ikke mindst - i er inde på noget vedr. sikkerhed når det kom til Gæstebogen, ift. ikke at være eksisterende - har været en del rundt på Forum, men synes ikke rigtig jeg kan finde noget omkring dette, så kan nogen guide mig i den rigtige retning, så jeg også kan få det på plads med tiden?

Takker på forhånd for hjælpen og rart med et Forum man kan henvende sig til når man vil dele sine glæder/frustrationer og vil helt sikkert blive rigeligt besøgt, så *klap klap* for det. ;)

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af ThomasI » 21. mar 2012, 21:30

Hej Brian og velkommen til! :D

Grunden til at du får en blank side er at du jo sender dine dataer fra form til en ny side "skrivtil"

Denne sider indeholder intet andet end din php kode som indsætter data i din .txt fil - og derfor er siden blank.

Det du kan gøre så du undgår den blanke siden og så du ryger direkte til bare på den forrige side er at tilføje :

Kode: Vælg alt

header('Location: dinside.php');
( Det bliver f.eks brugt i denne video: http://www.nemprogrammering.dk/Tutorial ... T18PHP.php )

i starten af din kode i din "skrivtil" php fil...

Dinside.php skal vel så være den hvor man kan taste ind i formen, måske visindhold.php ( husk igen den rigtige sti i header)

Du kan desværre ikke gøre så meget ved rækkefølgen, da det jo "bare" er en fil du får vist på din side... Hvis du ønsker mere funktionalitet OG fed skrift på navne skal du hen og bruge noget mysql database, for som du også selv er inde på så er en .txt gæstebog lidt for simple til at have disse funktionaliteter...

Med hensyn til dine stier kan det anbefales at bruge absolutte stier...så er du ihverfald sikkert på at der ikke går ged i den...

Internet URL absolut sti

Kode: Vælg alt

http://www.nemprogrammering.dk/fil.php
Internet URL ikke absolut sti (relativ sti)

Kode: Vælg alt

fil.php
Hvis du sidder på en localhost vil den absolutte sti sikkert se således ud:

Kode: Vælg alt

http://localhost/undermappe1/undermappe2/fil.php
http://localhost/ er roden i din htdocs mappe...


Sikkerheden har ikke så meget at sige i en gæstebog der er basseret på en .txt fil.... det er mest når du bruger en database at der skal en del sikkerhed på ;)

Brian
Begynder
Indlæg:7
Tilmeldt:21. mar 2012, 15:23

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af Brian » 21. mar 2012, 23:47

Hey Thomas og takker :D

Jamen tænkte jo nok det var sådan noget der var årsag til den blanke side, som jeg også var inde på.

Har så prøvet at følge dit forslag, men kan stadig ikke få det til at virke, får bare denne "Kunne ikke finde filen" - på en blank side...?

Så videoen - som placere header('Location: dinside.php'); nærmest nederst i koden og ikke i starten som du er inde på, men prøvede flere steder, sågar oppe i <head></head>, bare for at prøve noget, men med samme resultat - prøvede også at smide den ind i VisIndhold.php'en - igen bare for at prøve.

Frisk på lige at løbe det igennem - formoder nemlig også lidt det er selve mine stier den er galt med, som også var et problem, da jeg prøvede at smide SkrivTil og guestbook.txt i en mappe:"txt", så måske har jeg misforstået noget og simpelthen bare gør det forkert... hmm... :?:

Jamen må jo så senere få kigget på det der mysql database - men tør jeg slet ikke hoppe ud i pt. nu med tanke på jeg ikke engang kan få styr på simple stier i noget der burde være ligetil. :lol: Så lige hvad det angår vender jeg jo nok tilbage. :)

SkrivTil (guest_book):

Kode: Vælg alt

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
        <?php
		header('Location: http://www.***************.dk/guestbook.php');
		ini_set('date.timezone', 'Europe/Copenhagen');
$navn = $_POST["fornavn"]." ".date("d-m-Y # H:i:s");
$kommentar = $_POST["kommentar"];

$fil = fopen("http://www.***************.dk/guestbook.txt", "a+") or exit("Kunne ikke finde filen");

fwrite($fil , $navn."\n".$kommentar."\n"."\n");



fclose($fil);



        ?>
</body>
</html>
VisIndhold (guestbook):

Kode: Vælg alt

<div id="middle_box_3" style="height: auto; margin-bottom: 16px;">
  <div align="center">
    <table width="350" border="0">
      <tr>
        <td><form action="http://www.***************.dk/guest_book.php" method="POST">
            <div align="center"><b>Navn</b> :<br/> <input type="text" name="fornavn"/><br/><br/>
              <b>Kommentar</b> :<br/> 
              <textarea name="kommentar"></textarea><br/><br/>
              <input type="submit" value="SEND"/>
            </div>
            </form></td>
        </tr>
    </table>
  </div>
</div>

  
<div id="middle_box_4" style=" overflow: auto; height: 450px; margin-bottom: 50px; border: 1px solid #000; padding: 8px;">
        <?php
       $fil = fopen("http://www.***************.dk/guestbook.txt", "r") or exit("Kunne ikke finde filen");

       while(!feof($fil)){
           echo fgets($fil) ."<br/>";
       }
       fclose($fil);
        ?>
</div>
Tillod mig lige at *'ne selve adr. ud, da det pt. ikke lige er offentligt tilgængeligt, så langt er jeg ikke nået med siden endnu - ikke dermed sagt den ikke ligger på en Server out there, for gør den da, også derfor det intet er omkring "localhost" i stierne. ;)

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af ThomasI » 22. mar 2012, 08:46

Hej igen :)

Tror problemet med at header ikke virker ligger i din .txt sti...

For at være sikker så prøv at lave en en simpel side kun med header() og prøv så at sæt location til google eller sådan... hvis du bliver sendt til google så virker header ihverfald korrekt som du bruger den...

Med hensyn til din sti til txt filen, så tror jeg måske at du skal bruge en lidt anderledes sti...

Det er en sti man også bruger når man uploader filer til en server...den afhænger lidt af din hosting udbyder...

Hvis du har surftown vil den f.eks se således ud:

Kode: Vælg alt

/hsphere/local/home/ditbrugernavn/ditdomæne(root-folder)/undermappe1/undemappe2/tekst.txt"
Alternativ kan du skrive dette ind som din sti:

Kode: Vælg alt

require_once ROOT_PATH . "/undermappe1/tekst.txt";

Kode: Vælg alt

require_once ROOT_PATH . "/tekst.txt";
( hvis txt filen ligger i roden)

Hvilken udbyder har du?

Brian
Begynder
Indlæg:7
Tilmeldt:21. mar 2012, 15:23

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af Brian » 22. mar 2012, 11:57

Ola

Hmm... Har nu prøvet følgende:

SkrivTil (guest_book2):

Kode: Vælg alt

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
        <?php
		header('Location: http://www.google.dk/webhp?hl=da');
        ?>
</body>
</html>
VisIndhold (guestbook2)

Kode: Vælg alt

<div id="middle_box_3" style="height: auto; margin-bottom: 16px;">
  <div align="center">
    <table width="350" border="0">
      <tr>
        <td><form action="http://www.***************.dk/guest_book.php" method="POST">
            <div align="center"><b>Navn</b> :<br/> <input type="text" name="fornavn"/><br/><br/>
              <b>Kommentar</b> :<br/> 
              <textarea name="kommentar"></textarea><br/><br/>
              <input type="submit" value="SEND"/>
            </div>
            </form></td>
        </tr>
    </table>
  </div>
</div>

  
<div id="middle_box_4" style=" overflow: auto; height: 450px; margin-bottom: 50px; border: 1px solid #000; padding: 8px;">
        <?php
       $fil = fopen("http://www.***************.dk/guestbook2.txt", "r") or exit("Kunne ikke finde filen");

       while(!feof($fil)){
           echo fgets($fil) ."<br/>";
       }
       fclose($fil);
        ?>
</div>
Som jeg tolkede hvad du mente jeg skulle prøve, men som heller ikke virker - havner bare på denne blanke side: http://www.***************.dk/guest_book2.php istedet for: http://www.***************.dk/guest_book


Ikke lige med på hvor du mener jeg skal placere:

Kode: Vælg alt

require_once ROOT_PATH . "/tekst.txt";
istedet for:

Kode: Vælg alt

"http://www.***************.dk/guestbook2.txt"
fra VisIndhold (guestbook2) og i SkrivTil for den sags skyld -eller?


jeg hoster via: http://www.one.com/da/


Nogen der sagde NemProgrammering :?: :lol:

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af ThomasI » 23. mar 2012, 11:28

hmm...

prøv at gå direkte ind på din side "http://www.***************.dk/guest_book2.php" ved at taste URL´en ind i din browser...

Så skulle du gerne blive sendt videde til google...Prøv dog at ændre til "http://www.google.com/"

Du skal dog også lige have flyttet din header så den er helt oppe i toppen, eller virker det ikke:

Kode: Vælg alt

<?php
header("Location: http://www.google.com/");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
</body>
</html>
Med hensyn til din sti tænker jeg at dette måske virker:

fopen(require_once ROOT_PATH . "/guestbook2.txt", "r")

det samme gælder for fwrite...

Alternativt kan du finde UNIX stien til din txt fil og prøve at sætte den ind - kan være det hjælper...

Fandt hjælp til dette via one.com

http://www.one.com/da/support/faq/unix-path

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af ThomasI » 23. mar 2012, 11:50

Kode: Vælg alt

fopen(require_once ROOT_PATH . "/guestbook2.txt", "r")
er self hvis din txt fil ligger i roden...

Kode: Vælg alt

fopen(require_once ROOT_PATH . "/txt/guestbook2.txt", "r")
hvis den ligger i en mappe der hedder txt

Brian
Begynder
Indlæg:7
Tilmeldt:21. mar 2012, 15:23

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af Brian » 24. mar 2012, 13:50

Hey igen

Også hmm... herfra :)

Ved ikke lige hvad der sker, har nu igen prøvet lidt forskelligt, også den med kun at køre med:

Kode: Vælg alt

        <?php
		header('Location: http://ekstrabladet.dk/');
        ?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

</body>
</html>
som jeg så har ændret til ekstrabladet fremfor google, da den med google, alligevel hopper på google, dog så med at den ikke kan hitte - ja google :D

Men kan så heller ikke finde ekstrabladet, da lidt spøjst...

Er kommet frem til at hvis jeg bruger:

Kode: Vælg alt

"/guestbook.txt"
altså med "/" foran selve siden, som du er inde på, men så går der kage i hvordan siden visses, i form af det halve af baggrunden (i master) ikke visses og selve Gæstebogen, med indlæg er der heller ikke.

Har også prøvet lidt med:

Kode: Vælg alt

require_once ROOT_PATH . "/tekst.txt";
men hvis jeg bruger dén, ja så går der helt kage i siden, som i jeg får en blank side og derefter beskeden at tilgangen til siden lukkes ned og først kan komme på senere (noget i den stil)

Heller ikke helt med på hvordan jeg skal stille den der header("Location: guestbook.dk/"); op henne ift. du er inde på den skal være i toppen - nu når det andet jo også skal være dér, er måden så sådan:

Kode: Vælg alt

 <?php
		header("Location: guestbook.dk/");
		
		?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
        <?php
		ini_set('date.timezone', 'Europe/Copenhagen');
$navn = $_POST["fornavn"]."\n".date("d-m-Y # H:i:s");
$kommentar = $_POST["kommentar"];

$fil = fopen("/guestbook.txt", "a+") or exit("Kunne ikke finde filen");

fwrite($fil , $navn."\n".$kommentar."\n"."\n");



fclose($fil);



        ?>
</body>
</html>
eller...?

Har fundet min UNIX sti, men er i tvivl om jeg så bare skal smide selve stien (som jeg er noget lang og en masse / imellem, samt begynder og slutter med / også) ind foran guestbook.dk

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af ThomasI » 24. mar 2012, 14:48

Har netop testet din kode med header() i toppen og jeg bliver sendt direkte videre til ekstrabladets hjemmeside...så det er ikke koden den er gal med...
Du er på et Linux webhotel ikke?

Med hensyn til stien så skal du bare skrive HELE UNIX stien ind også selvom den er ret lang...sådan plejer de nemlig at være...

Husk også at ændre dine rettigheder til .txt filen så du kan få lov at skrive og læse på den...
http://codex.wordpress.org/Changing_File_Permissions

Med hensyn til header("Location: guestbook.dk/"); skal du skrive hele den absoluette sti, altså med http://www. osv foran...

Brian
Begynder
Indlæg:7
Tilmeldt:21. mar 2012, 15:23

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af Brian » 24. mar 2012, 15:13

Okay, så det bare hér der er et eller andet galt. Hmm...

Linux webhotel - øhh?..
Som tidligere skrevet bruger jeg http://www.one.com/da/ - om det så er Linux siger mig ingenting, ej heller hvad forskellen skulle være? :?

Ændre rettigheder til .txt filen - mere øhh... :D
Hvad har det med wordpress at gøre og hvis det skal gøres, hvor finder/gør jeg: Right-click 'index.php' and select 'File Permissions' A popup screen will appear., så jeg kan få skrevet det der 666 som dit link viser?
Hvis det er noget jeg skal? Ikke at jeg kan se det skulle være et problem, da det jo egentlig virker godt nok som det er nu, men uden "/" forrest i stierne - problemet er jo bare at den hopper videre til en blank side, fremfor bare at blive på samme side og så opdatere sig selv.
Så den med at ændre rettigheder på txt filen er jeg slet ikke med på?

Bevares oplevede også problemer med stier hvis jeg smed noget af det i en mappe "txt" - da gik der også kage i det, men så nok en anden ting.

Stadig ikke helt med ift. hvor du mener jeg skal bruge UNIX sti og hvor jeg skal bruge absolutte sti?

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af ThomasI » 24. mar 2012, 16:55

Ah okay...fangede ikke lige at det virkede ;)

Bare gemt fil rettigheder så!

Og hvis dit andet php virker og du kan skrive til filen, så er det et Linux system du kører på...du kan nemlig ikke bruge php hvis du har en windows server...men det har du så ikke ;)

Du kan smide din unix sti ind der hvor du angiver stien til txt filen...altså f.eks:

Kode: Vælg alt

$fil = fopen("UNIX stien", "a+") or exit("Kunne ikke finde filen");
Som vi også skrev om før så sender den dig til en tom side som er "skrivtil" siden, fodi det er her din "skriv til fil" kode bliver udført... den er tom fordi der kun er php indhold på den ( og intet printet eller echoed data )...

Hvis din header() dog virkede i din "skrivtil" php fil så ville du blive sendt til den side du nu gerne ville efter koden var blev kørt. Men eftersom det underligt nok ikke virker med header() hos dig så forbliver du bare på den samme blanke side...

Det er ihverfald sådan jeg forstår det ;)

Du kan også sende dig selv tilbage på en anden måde, men så skal du bruge javascript:

Kode: Vælg alt

<script type="text/javascript">
<!--
window.location = "http://www.xxxxx.dk/visindhold.php"
//-->
</script>
koden skal placeres imellem dine head tags i skrivtil php filen

Den vil sende dig til en valgfri side...det kunne f.eks være din visindhold side...

Brian
Begynder
Indlæg:7
Tilmeldt:21. mar 2012, 15:23

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af Brian » 24. mar 2012, 17:29

Ah okay...fangede ikke lige at det virkede
Det startede jeg jo også med at skrive; at den gik videre til en blank side og jeg ønskede den skulle blive på samme side, men bare opdatere sig selv, når man trykkede "SEND" ;)
Og hvis dit andet php virker og du kan skrive til filen, så er det et Linux system du kører på...du kan nemlig ikke bruge php hvis du har en windows server...men det har du så ikke
Øhh what?... Siger du dermed at jeg sidder og køre Linux herhjemme, eller mener du at http://www.one.com/da/ køre Linux? - Ikk' lige med dér?...


Vil da prøve med UNIX stier - og med javascript, nu da header("Location: guestbook.dk/"); underligt nok ikke vil. :?

Til slut vil jeg da også lige takke for hjælpen - so far, dejligt at nogen vil bruge tiden på at kaste sig over et problem og se om en løsning kan findes. ;)

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af ThomasI » 24. mar 2012, 19:45

Jeg tænker naturligvis på det webhotel hos one.com hvor du har dine filer liggende...det er det som kører på linux ;)...

Men held og lykke med javascriptet...skriv gerne hvordan det går...

Brian
Begynder
Indlæg:7
Tilmeldt:21. mar 2012, 15:23

Re: Gæstebogen - tutorialen samt div ift.

Indlæg af Brian » 25. mar 2012, 15:55

Hey hey

Nu virker det sgu :D

Brugte dit javascript og alt andet som hidtil, altså ikke noget med UNIX sti, bare "guestbook.txt"

Bare spøjst at header('Location: guestbook.php") ikke ville... Hmm...

Takker mange gange for hjælpen, rart lige at få dét på plads også, så det virker efter hensigten. ;)

-------------------------------------------------------------------------------------------
EDIT

Argh da utroligt :lol: , var jo bare en fejl 40, som man siger...

Prøvede lige igen med:

Kode: Vælg alt

<?php
header("Location: guestbook.php");
?>
- og tyder på det virker alligevel - tror sgu de andre gange har jeg skrevet .dk og ikke .php - måske :P

Besvar