Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 07.01.2007, 15:59 Titel: PHP Gaestebuch Frage |
|
|
Auch ich habe mich mal mit php beschäftigt und habe versucht ein Gästebuch zu schreiben. Wie ihr warscheinlich schon gefolgert habt funktioniert es nicht. Die Frage Warum: Code: | <?
touch("gaestebuch.inc");
include("gaestebuch.inc");
?>
<hr>
<form action="<?php $PHP_SELF?>" method="post">
Name:<br>
<input type="text" name="name"><br><br>
Eintrag:<br>
<textarea name="text" rows="5" cols="50"></textarea><br>
<br>
<input type="submit" value="Abschicken">
</form>
<hr>
<?
if (!isset($name))
{}
else
{
$schreiben=fopen("gaestebuch.inc","w");
$lesen=fopen("gaestebuch.inc","r")
$länge=filesize("gaestebuch.inc");
$eintrag="<u>$name hat geschrieben:</u> <br> $text <br><hr>" + fread($lesen,$länge);
fwrite($schreiben,$eintrag);
fclose($schreiben);
fclose($lesen);
}
?> |
Warscheinlich habe ich wie immer irgendeinen kleinen Fehler gemacht und ich gebe hiermit die offizielle Erlaubnis laut zu lachen  _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
The real Agent D

Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 07.01.2007, 16:24 Titel: |
|
|
Hi,
schreibt man in php einen Code-abschnitt nicht so?:
|
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 07.01.2007, 16:27 Titel: |
|
|
das php in <?php kann man weglassen - das kanns nicht sein _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2007, 17:34 Titel: |
|
|
ich gebe dir mal allgemien tipps:
1) Ähm, also ich würde die HTML-Formatierung nicht gleich ins Gästebuch mit eintragen. Wenn du dein Design änderst, ist das blöd
2) Trage deine GB-Einträge mit htmlentities(Text) ein - dadruch können die schreiberlinge KEINE html-tags in ihren gb-eintrag einbauen (spam, viren, ...)
3) if (!isset($name)) {} sieht für mich sinnlos aus xD mach doch gleich if (isset($name)) {aktion...
edit: das was du da mit $schrienbben und $lesen mcahst ist mir nicht geheuer... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 07.01.2007, 18:38 Titel: |
|
|
wie würdest du es machen? hasst du ein bsp für mich? An das mit den html-tags hab ich auch schon gedacht allerdings sagt mir htmlentities(Text) nix. _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 07.01.2007, 18:50 Titel: |
|
|
srry wegen doppelpost
das Grundgerüst des GB sieht so aus und funktioniert auch prima: Code: |
<?
touch("gaestebuch.inc");
include("gaestebuch.inc");
?>
<hr>
<form action="<?php $PHP_SELF?>" method="post">
Name:<br>
<input type="text" name="name"><br><br>
Eintrag:<br>
<textarea name="text" rows="5" cols="50"></textarea><br>
<br>
<input type="submit" value="Abschicken">
</form>
<hr>
<?
if (isset($name))
{
$datei=fopen("gaestebuch.inc","a+");
$eintrag="<u>$name hat geschrieben:</u> <br> $text <br><hr>";
fwrite($datei,$eintrag);
fclose($datei);
}
?>
|
http://alfonsospringer.al.funpic.de/ siehe gästebuch
Allerdings ist hier das problem, dass der neuse Eintrag imme rUNTEN und nicht OBEN erscheint. Um dies zu vermeiden wollte ich den gesamten Inhalt der datei in eine variable einlesen, diesen an den neuen eintrag dranhängen und damit den alten inhalt der datei überschreiben. So kam ich zum obricen code, aber der klappt ja nicht _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2007, 18:58 Titel: |
|
|
htmlentities(TEXT) wandelt zeichen wie < und > in entities um, sodass sie nicht als code erschienen sondern als reiner text.
mit file_getcontents(Dateiname) kannst du den inhalt des GBs einlesen und dann noch dranbauen.
edit: dein Counter sollte IPs zählen und nicht page hits.
edit2: wenn du willst, geb ich dir auch den code von meinem gb...
edit3: schön und gut, dass du "bücher über php" durchgewälzt hast, aber in so einem fall solltest du lieber auf die einmalige PHP-Referenz zurückgreifen.
[prahl-modus]ich konnte vorher nur basic, keine c-style sprache. so lernte ich mit dieser referenz innerhalb von 2 tagen php und baute mir einen counter und ein gb, die deine um welten übertreffen[/prahl-modus]  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 07.01.2007, 19:06 Titel: |
|
|
@jojo: das problem mit dem browser ist bei anderen auch schon aufgetreten - kp warum bei mir gehts _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2007, 19:06 Titel: |
|
|
ich sehs ja: die function heißt file_get_contents xD _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 07.01.2007, 19:08 Titel: |
|
|
Code: |
<h3 class="blub">Gästebuch<h3>
<?
touch("gaestebuch.inc");
include("gaestebuch.inc");
?>
<hr>
<form action="<?php $PHP_SELF?>" method="post">
Name:<br>
<input type="text" name="name"><br><br>
Eintrag:<br>
<textarea name="text" rows="5" cols="50"></textarea><br>
<br>
<input type="submit" value="Abschicken">
</form>
<hr>
<?
if (isset($name))
{
$datei=fopen("gaestebuch.inc","a+");
$name=htmlentities($name);
$text=htmlentities($text);
$eintrag="<u>$name hat geschrieben:</u> <br> $text <br><hr>" + file_get_contents("gaestebuch.inc");
fwrite($datei,$eintrag);
fclose($datei);
}
?>
|
schau dir mal den fehler an dens jetzt macht - bitte _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2007, 19:09 Titel: |
|
|
geh mal ins icq... da geht das besser.
und btw: schreibe den eintrag ERST ins gb und zeig is dann an. sonst seiht man seinen eigenen ientrag net _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 07.01.2007, 19:10 Titel: |
|
|
deine icq nr bitte _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 07.01.2007, 19:12 Titel: |
|
|
Öhm, moment mal..
"if (isset($name))", das prüft doch nur, ob die Variable $name vorhanden ist.
Ich denke eher, es sollte Code: | If (isset($_POST['name']) | heißen, oder lieg ich da falsch?  _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 07.01.2007, 19:15 Titel: |
|
|
OMG.
Schau mal unter Jojo's hübscher Signatur, da findet sich so ein hübscher Blumen-Button, der dich auf eine hübsche Blumen-Website weiterleitet, der du die hübsche Blumen-Nummer entnehmen kannst, mit der du Jojo über die hübsche Blume kontaktieren kannst. Dann könnt ihr euch über die hübsche Blume unterhalten.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2007, 19:31 Titel: |
|
|
hatte ihn schon geaddet und ich glaube, er sollte sich wirklich ma meinen code anschaun xD _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 07.01.2007, 23:53 Titel: |
|
|
Jojo hat Folgendes geschrieben: | 2) Trage deine GB-Einträge mit htmlentities(Text) ein - dadruch können die schreiberlinge KEINE html-tags in ihren gb-eintrag einbauen (spam, viren, ...) |
Und genau hier wird glücklicherweise eines der wichtigsten Probleme von PHP speziell bei Einsteiger angedeutet: Wenn man dort nicht extrem wasserdicht programmiert, kann man auf einem Webserver geradezu Löcher aufreissen, ohne dass man es merkt! Dies kann bei sog. Shared Hosting (mehrere Kunden haben ihre Domain auf physikalisch demselben Server untergebracht) dazu führen, dass man unbewusst die übrigen Sites mitgefähret.
Typische Beispiele sind include mit einer Variable, die man womöglich mit $_GET[] mitgibt, so dass der Angreifer einen Scriptaufruf so präparieren kann, dass fremder PHP-Code eingebunden wird. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Toa-Nuva
Anmeldungsdatum: 14.04.2006 Beiträge: 204 Wohnort: München
|
Verfasst am: 08.01.2007, 08:19 Titel: |
|
|
programmierer hat Folgendes geschrieben: | Öhm, moment mal..
"if (isset($name))", das prüft doch nur, ob die Variable $name vorhanden ist.
Ich denke eher, es sollte Code: | If (isset($_POST['name']) | heißen, oder lieg ich da falsch?  |
So weit ich weiß, kann man das POST-Teil weglassen, funktioniert trotzdem. Natürlich kann man dann leicht tricksen, indem man das ganze in die URL statt ins dafür vorgesehene Formular schreibt, weil das Skript dann ja nicht mehr zwischen GET und POST unterscheidet. Bei diesem Skript ist das aber wohl eher kein schlimmer Fehler...  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 08.01.2007, 14:58 Titel: |
|
|
es gibt eine Konfigurationseinstellung, die php anweist, sämtliche $_POST['irgendwas'] auch als $irgendwas verfügbar zu machen. Das sollte man aber tunlichst nicht verwenden sondern immer $_POST['irgendwas'] benutzen weil das selbe auch für $_GET und afair auch für $_COOKIE, $_SESSION und $_SERVER gilt, sprich man die variablen wunderbar manipulieren kann da du nie weißt, von wo $irgendwas jetzt kommt. Zusätzlich ist diese option (register_globals) auch nicht auf jedem server aktiviert, $irgendwas existiert also nicht zwangsläufig. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 08.01.2007, 15:27 Titel: |
|
|
Und nicht zuletzt ist es einfach guter Programmierstil.
Ewige Suche im Code entfällt, wenn man wissen will, was $derstring nun ist.
@dreael:
Aber SQL-Injection gibt's nicht nur bei Anfängern. Zum Beispiel war es damals leicht, die Zugangsdaten für die Datenbank vom Internetauftritt von Gothic II zu bekommen.
Wurde dann zwar schnell gefixt, aber zeigt, dass auch "Profis" mal was vergessen. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.01.2007, 20:26 Titel: |
|
|
@Dreael:
Zum Glück hatte ich sowas gleich beachtet, als ich mein Gästebuch programmiert hatte (2 tage, nachdem ich mit php angefangen hab ) _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|