Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

PHP Gaestebuch Frage
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Off-Topic-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 07.01.2007, 15:59    Titel: PHP Gaestebuch Frage Antworten mit Zitat

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 durchgeknallt
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
The real Agent D



Anmeldungsdatum: 24.11.2005
Beiträge: 605
Wohnort: Hall i. T.

BeitragVerfasst am: 07.01.2007, 16:24    Titel: Antworten mit Zitat

Hi,

schreibt man in php einen Code-abschnitt nicht so?:
Code:

<?php
...
?>
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 07.01.2007, 16:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 17:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 07.01.2007, 18:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 07.01.2007, 18:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 18:58    Titel: Antworten mit Zitat

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] durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 07.01.2007, 19:06    Titel: Antworten mit Zitat

@jojo: das problem mit dem browser ist bei anderen auch schon aufgetreten - kp warum happy 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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 19:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 07.01.2007, 19:08    Titel: Antworten mit Zitat

Code:

<h3 class="blub">G&auml;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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 19:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 07.01.2007, 19:10    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 07.01.2007, 19:12    Titel: Antworten mit Zitat

Ö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? happy
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 07.01.2007, 19:15    Titel: Antworten mit Zitat

OMG. durchgeknallt lachen
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. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 19:31    Titel: Antworten mit Zitat

hatte ihn schon geaddet durchgeknallt 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 07.01.2007, 23:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Toa-Nuva



Anmeldungsdatum: 14.04.2006
Beiträge: 204
Wohnort: München

BeitragVerfasst am: 08.01.2007, 08:19    Titel: Antworten mit Zitat

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? happy

So weit ich weiß, kann man das POST-Teil weglassen, funktioniert trotzdem. zwinkern 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. lachen Bei diesem Skript ist das aber wohl eher kein schlimmer Fehler... zwinkern grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 08.01.2007, 14:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 08.01.2007, 15:27    Titel: Antworten mit Zitat

Und nicht zuletzt ist es einfach guter Programmierstil. Ja!
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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.01.2007, 20:26    Titel: Antworten mit Zitat

@Dreael:
Zum Glück hatte ich sowas gleich beachtet, als ich mein Gästebuch programmiert hatte (2 tage, nachdem ich mit php angefangen hab durchgeknallt )
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Off-Topic-Forum Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz