Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

php versus html

Pagina: 1
Acties:
  • 1.136 views

Verwijderd

Topicstarter
Hallo beste Tweakers,

Een klein probleempje heb ik hier.

Het gaat om het volgende; ik wil een commentbox op mijn website. Hij hoeft niet zo geavanceerd te zijn. Naam invoeren en bericht invoeren. Het script zelf heb ik al.

[code=php]<html>
<head>
<title>Comment</title>
</head>
<body>
<?php
$act = $_POST['act'];
if($act == "post") {
$name = $_POST['name'];
$message = $_POST ['message'];
@$fp = fopen("comments.php", 'a');
if (!$fp) {
//The file could not be opened
echo "There was an error! Please try again later!";
exit;
} else {
//The file was successfully opened, lets write the comment to it.
$outputstring = "<br>Name: " .$name. "<br> Comment:<br>" .$message. "<br>";

//Write to the file
fwrite($fp, $outputstring, strlen($outputstring));

//We are finished writing, close the file for security / memory management purposes
fclose($fp);

//Post the success message
echo "Your post was successfully entered. Click <a href='index.html'>here</a> to continue.";
}
} else {
//We are not trying to post a comment, show the form.
?>
<h2>Previous comments:</h2>
<?php include("comments.php"); ?>
<br><br>
<h2>Post a comment:</h2>
<form action="commentindex.php" method="post">
<table>
<tr>
<td>Name:</td>
<td><input type="text" name="name" value=""></input></td>
</tr>
<tr>
<td>Comment:</td>
<td><textarea name="message"></textarea></td>
</tr>
</table>
<input type="hidden" name="act" value="post"></input>
<input type="submit" name="submit" value="Submit"></input>
</form>
<?php
}
?>
</body>
</html>
[/code=php]

Maar het probleem zit hier:
code:
1
<?php include("comments.php"); ?>


Ik heb namelijk het script in mijn html website geplakt. Hij werkt goed, op een ding na. De code
code:
1
<?php include("comments.php"); ?>


werkt niet. Het idee van deze code is dat de comments op de plek worden weergeven waar het aan is gegeven (tenminste daar ga ik van uit). Alle comments die worden getypt komen wel in de comment.php te staan. Alleen hij include hem niet op de website.

Werkt die code niet in combinatie met html? Of doe ik iets verkeerds?


Bedankt.

  • posttoast
  • Registratie: April 2000
  • Laatst online: 23:25
Wat gebeurt er als je gewoon comments.php opent? Zie je dan wel iets? Sorry, ik lees niet goed. Het was lief bedoeld van me :X

Klopt het pad wel? Staat comments.php niet in een andere directory? En heb je error reporting aangezet (dat is wel zo handig tijdens het bouwen)?

Pas trouwens even je codetags aan. Als je er code=php van maakt, dan krijgt alles mooie kleurtjes en dat leest fijner.

[ Voor 36% gewijzigd door posttoast op 14-07-2012 12:20 ]

omniscale.nl


  • SwaffelSmurf
  • Registratie: Maart 2011
  • Laatst online: 16-11 22:24
Hoe heet de PHP pagina nu? Je hebt het over comments.php en comment.php? En als je de PHP pagina gewoon opent, wat zie je dan?

  • Cartman!
  • Registratie: April 2000
  • Niet online
Leg eens uit wat 'werkt niet' is... Krijg je een foutmelding? Zie je die code gewoon in het script staan? Laadt de pagina in z'n geheel niet?

Verwijderd

Topicstarter
Excuses.

Misschien wat een onduidelijke uitleg van me.

Ik heb eerst het gehele script gemaakt, via tutorials van YouTube: YouTube - Broadcast Yourself.
Dat heb ik gemaakt in commentindex.php
Ik heb ook een leeg comment.php document aangemaakt en daarin komen alle getypte comments te staan. Deze moet dus gelinkt worden aan dat script zodat die comments openen in mijn website. Want nu zie ik staan:

Berichten van andere:
Hier staat dus niks.

Je kan alles gewoon invoeren etc. maar je ziet de comments dus niet staan. Comments.php staat gewoon bij de pagina index.html etc. dus de link is goed.

  • sfranken
  • Registratie: Mei 2010
  • Laatst online: 01-10 14:47
Waarom een php file als plaintext DB gebruiken? Gaat dat niet veel beter met een JSON file (aangezien PHP json kan schrijven en lezen met json_encode en json_decode icm file_get_contents()), of een .txt file?

  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02-2023
Zet eens in je index.html boven $act

PHP:
1
error_reporting(E_ALL);

  • Cartman!
  • Registratie: April 2000
  • Niet online
Je linkje komt op de index van YouTube uit, daar hebben we nog niks aan natuurlijk ;)

Wat is nu het verschil tussen comment.php en comments.php? Sowieso moet je nooit berichten van users op gaan slaan in een .php file, dat is een enorm risico qua beveiliging. Wat heb je precies al geprobeerd om het zelf op te lossen?

@xh3adshotx: laat hem meteen error_reporting(-1) gebruiken ipv. E_ALL, helaas is E_ALL namelijk niet daadwerkelijk alles waar -1 dit wel is.

[ Voor 18% gewijzigd door Cartman! op 14-07-2012 12:44 ]


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 21-11 18:12
Als je berichten zonder enige controle in een php file opslaat kunnen kwaadwillende (afhankelijk van de beveiliging van het systeem/webserver) zo'n beetje overal bijkomen, groot risico.

Gebruik of json, plain txt of een db!

  • X_lawl_X
  • Registratie: September 2009
  • Laatst online: 22:12
^

En gebruik ook htmlspecialchars. Bedenk maar eens wat er zou gebeuren als iemand de naam '<b>' gebruikt.

[ Voor 25% gewijzigd door X_lawl_X op 14-07-2012 12:49 ]


  • sfranken
  • Registratie: Mei 2010
  • Laatst online: 01-10 14:47
RedHat schreef op zaterdag 14 juli 2012 @ 12:47:
Als je berichten zonder enige controle in een php file opslaat kunnen kwaadwillende (afhankelijk van de beveiliging van het systeem/webserver) zo'n beetje overal bijkomen, groot risico.

Gebruik of json, plain txt of een db!
Let er dan wel op dat niemand zo bij die files kan. Een DB is een ander verhaal.

  • MsG
  • Registratie: November 2007
  • Laatst online: 21:06

MsG

Forumzwerver

Include je de pagina wel in een pagina die een .php-extensie heeft en niet per ongeluk in een .html-pagina?

Denk om uw spatiegebruik. Dit scheelt Tweakers.net kostbare databaseruimte! | Groninger en geïnteresseerd in Domotica? Kom naar DomoticaGrunn


Verwijderd

Topicstarter
Bedankt voor jullie reacites.

Ik ben niet zo sterk in het gebied van php. Een database, had ik geprobeerd, maar daar kwam uit:

Error*

Gaf daar de moed al snel op. Zou ik dan moeten goochelen met een database?

@MsG nee ik include hem idd in een .html pagina. Is dat een probleem?

Jullie hebben het over de gegevens zien van andere. Maar die kunnen ze toch ook zien wanneer de site online staat? Ze geven alleen een naam op en een comment. Een email adres, telefoonnummer etc. is allemaal niet nodig. Of is dat nog steeds een risicio?

  • sfranken
  • Registratie: Mei 2010
  • Laatst online: 01-10 14:47
PHP moet door de server uitgevoerd worden. Als je php gebruikt in een pagina die eindigt op .html gaat dat niet werken aangezien dat direct naar je browser gaat zonder tussenkomst van het PHP proces op de server.

  • MsG
  • Registratie: November 2007
  • Laatst online: 21:06

MsG

Forumzwerver

Ja, de include-functie die je gebruikt is een PHP-functie. Als je de betreffende pagina dan als HTML laat en niet als PHP wordt de PHP-code niet uitgevoerd en gewoon weergeven.

Denk om uw spatiegebruik. Dit scheelt Tweakers.net kostbare databaseruimte! | Groninger en geïnteresseerd in Domotica? Kom naar DomoticaGrunn


Verwijderd

Topicstarter
Hoe zou ik hem dan moeten includen? Of is dit onmogelijk, in dit geval?

  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02-2023
Verwijderd schreef op zaterdag 14 juli 2012 @ 12:56:
Bedankt voor jullie reacites.

Ik ben niet zo sterk in het gebied van php. Een database, had ik geprobeerd, maar daar kwam uit:

Error*

Gaf daar de moed al snel op. Zou ik dan moeten goochelen met een database?

@MsG nee ik include hem idd in een .html pagina. Is dat een probleem?

Jullie hebben het over de gegevens zien van andere. Maar die kunnen ze toch ook zien wanneer de site online staat? Ze geven alleen een naam op en een comment. Een email adres, telefoonnummer etc. is allemaal niet nodig. Of is dat nog steeds een risicio?
Jij zet data wat een gebruiker invoert rechtstreeks in een .php file. Dat bestand word dus uitgevoerd door de server, iemand die jouw server wilt hacken kan dus elk willekeurig command uitvoeren. (Mits je configuratie niet goed is...)

Zie bijvoorbeeld: http://php.net/manual/en/function.exec.php

[ Voor 5% gewijzigd door xh3adshotx op 14-07-2012 13:00 ]


  • posttoast
  • Registratie: April 2000
  • Laatst online: 23:25
Verwijderd schreef op zaterdag 14 juli 2012 @ 12:59:
Hoe zou ik hem dan moeten includen? Of is dit onmogelijk, in dit geval?
Gewoon je HTML bestand een PHP extensie geven ;)

omniscale.nl


  • sfranken
  • Registratie: Mei 2010
  • Laatst online: 01-10 14:47
Door je extentie te veranderen van .html naar .php. Een andere manier is onmogelijk.
te laat

[ Voor 8% gewijzigd door sfranken op 14-07-2012 13:00 . Reden: Te traag getypt ]


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik wil een commentbox op mijn website. Hij hoeft niet zo geavanceerd te zijn. Naam invoeren en bericht invoeren. Het script zelf heb ik al.
Er is niet zoiets als "het script". Dat stuk script wat je laat zien is bedoeld om als aparte pagina te linken (hij begint immers met <html>. Je kunt het wel includen op een bestaande pagina, maar dat moet dan een .php-bestand zijn (anders wordt de <?php include.... ?> gewoon doorgegeven aan de browser, die daar niks mee kan). Daarnaast wordt dan, als die pagina ook al een volledige html-pagina is, de resulterende html niet bepaald valide.

Wat je dus zou kunnen doen is naar dit bestand linken (<a href="bestandsnaam.php">Gastenboek</a>). Het script blinkt echter uit in waar de meeste PHP-snippets die door hobbyisten online worden gegooid in uitblinken: het staat bol van de fouten. Ik zou het dus niet doen.

Is het geen optie om een gehost gastenboek van een derde partij te includen, hetzij op een aparte pagina hetzij als iframe?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

Topicstarter
Warning: include(commentsphp) [function.include]: failed to open stream: No such file or directory in public_html/index.php on line 99

Warning: include(commentsphp) [function.include]: failed to open stream: No such file or directory in public_html/index.php on line 99

Warning: include() [function.include]: Failed opening 'commentsphp' for inclusion (include_path='.:/usr/local/lib/php') in public_html/index.php on line 99

Deze error wordt nu gespamd. Regel 99 is; <?php include(comments.php); ?>
Heb de extensie gewijzigd na .php

[ Voor 205% gewijzigd door Verwijderd op 14-07-2012 13:07 ]


  • sfranken
  • Registratie: Mei 2010
  • Laatst online: 01-10 14:47
Puntje vergeten? commentsphp lijkt me fout, comments.php niet.

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 23:14
Lekker XSS gevoelig scriptje ben je aan het maken :X

Sometimes you need to plan for coincidence


Verwijderd

Topicstarter
Dacht ik dus ook maar die staat dus wel goed. <?php include(comments.php); ?>

@ Ik ben geen prof, ik ben momenteel in de beginfase of iets denk.. :p

[ Voor 32% gewijzigd door Verwijderd op 14-07-2012 13:09 ]


  • sfranken
  • Registratie: Mei 2010
  • Laatst online: 01-10 14:47
Dan doe je het nog fout, je bestandsnaam is een string:
<?php include("comments.php");?>

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22:10

Matis

Rubber Rocket

Zit het hele probleem niet gewoon in het feit dat php het bestand als comments.php gaat parsen als php-bestand?
Is in dat geval niet gewoon file_get_contents("comments.php"); de functie waar je naar opzoek bent?

If money talks then I'm a mime
If time is money then I'm out of time


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Hallo whatdoyouthink, en welkom op GoT. :) Helaas ga ik je allereerste topic meteen al moeten sluiten. Ik zal proberen uit te leggen waarom.

Om te beginnen verwachten we van onze gebruikers een bepaalde mate aan eigen inzet en, in mindere mate, eigen kennis. De indruk die ik van jouw topic krijg is dat je ergens een script vandaan hebt getrokken, het in je code plakt, erachter komt dat het niet werkt en vervolgens hier om support komt vragen. We geven in essentie al geen support op scripts die je niet zelf geschreven hebt, maar als je daarbij zelf ook nog eens geen kennis hebt om met gegeven tips aan de slag te kunnen wordt het al snel verdomd moeilijk om je te helpen.

Dat brengt me meteen bij het tweede punt: we moeten je in dit topic bij elke kleine stap "aan het handje houden". Steeds als je een probleem oplost en tegen een nieuw probleem aanloopt lijk je het eerst hier te posten in plaats van even te Googlen en kijken wat het kan zijn. We zijn niet te beroerd om mensen te helpen, maar dan moeten die mensen wel eerst bereid zijn om zichzelf te helpen. :)

Kort samengevat: lees De Quickstart en Waar hoort mijn topic? even door. Daar staan onze richtlijnen en regels voor wat betreft het openen van succesvolle topics in dit forum. Als je je daaraan kunt houden mag je gerust een nieuw topic openen waarin het ongetwijfeld makkelijker wordt om je probleem op te lossen. :)

Ondanks dit slotje wens ik je toch nog veel plezier op GoT. :)
Matis schreef op zaterdag 14 juli 2012 @ 13:13:
Zit het hele probleem niet gewoon in het feit dat php het bestand als comments.php gaat parsen als php-bestand?
Is in dat geval niet gewoon file_get_contents("comments.php"); de functie waar je naar opzoek bent?
Het maakt PHP niet uit of er al dan niet PHP staat in een file die hij includet. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.