Kleines Problem mit PHP

Hier kann über alles diskutiert werden, wirklich alles. Betonung liegt auf "diskutiert", das ist also kein Freischein zum Spammen.
(Beitragszähler deaktiviert)
bwoebi
Administrator
Beiträge: 3438
Registriert: 28. Apr 2008, 19:13

Re: Kleines Problem mit PHP

Beitrag von bwoebi » 4. Apr 2013, 13:11

Nein. Aber sag doch gleich, dass wir include nicht nutzen dürfen. Hat ja auch diese Probleme....

Die Funktion ist da, da es nicht anders geht in C. (Ich frage mich nur warum intern nicht auf ein \0 im String geprüft wird...)
Bogs sind meine Spezialität - Signaturen sind eigentlich doch überflüssig...

Benutzeravatar
burning eagle
Zauberer der Bergwiesen
Beiträge: 663
Registriert: 12. Aug 2009, 21:17
Wohnort: W1
Kontaktdaten:

Re: Kleines Problem mit PHP

Beitrag von burning eagle » 8. Apr 2013, 22:30

Wo wir grad beim Thema Sicherheit und Includes sind: Je nachdem, was für Seiten du einbindest (z.B. welche die eigentlich bestimmte Rechte erfordern, etc.) solltest du die zu includende Seite schützen, in dem du prüfst, ob sie von der Aufruf-Datei aufgerufen wird oder man sie einfach so per Browser öffnet. (z.B. per Konstante, die in der Aufruf-Datei gesetzt wird)

Um bisschen rumzutesten brauchst du das allerdings alles noch nicht und du kannst das erstmal alles in einer Datei machen. :wink:

Benutzeravatar
Blue.Shark
großer Laubbär
Beiträge: 2864
Registriert: 5. Okt 2008, 21:27

Re: Kleines Problem mit PHP

Beitrag von Blue.Shark » 9. Apr 2013, 16:08

burning eagle hat geschrieben:Wo wir grad beim Thema Sicherheit und Includes sind: Je nachdem, was für Seiten du einbindest (z.B. welche die eigentlich bestimmte Rechte erfordern, etc.) solltest du die zu includende Seite schützen, in dem du prüfst, ob sie von der Aufruf-Datei aufgerufen wird oder man sie einfach so per Browser öffnet. (z.B. per Konstante, die in der Aufruf-Datei gesetzt wird)
Also du meinst das man sie Startseite umgeht und oben direkt ?page=news eingibt und direkt zu den Neuigkeiten kommt?
Naja das wär ja nicht so schlimm. Bzw. kann man das überhaupt umgehen, wenn ja, wie?
Macht alle bei meinem Spiel mit -> Wörter raten
Meine aktuelle User-Idee: Errungenschaften auf Zeit
Meine Wunsch-Idee: Das Haus der Statistiken, Liebligskarte: Etume - das Flusstal. Andere Userideen: Zauber der globalen Wunder

Benutzeravatar
Maverick123
Zauberer der Bergwiesen
Beiträge: 625
Registriert: 27. Nov 2005, 13:46

Re: Kleines Problem mit PHP

Beitrag von Maverick123 » 9. Apr 2013, 16:39

Er meint, dass man nicht einfach news.php öffnen kann, sondern nur über index.php?page=news den Inhalt der Datei abrufen kann. Macht an gewissen Stellen Sinn.
BildHerbstwind - Welt 13

Benutzeravatar
Blue.Shark
großer Laubbär
Beiträge: 2864
Registriert: 5. Okt 2008, 21:27

Re: Kleines Problem mit PHP

Beitrag von Blue.Shark » 9. Apr 2013, 17:17

Maverick123 hat geschrieben:Er meint, dass man nicht einfach news.php öffnen kann, sondern nur über index.php?page=news den Inhalt der Datei abrufen kann. Macht an gewissen Stellen Sinn.
Und wie verhindert man das?
Macht alle bei meinem Spiel mit -> Wörter raten
Meine aktuelle User-Idee: Errungenschaften auf Zeit
Meine Wunsch-Idee: Das Haus der Statistiken, Liebligskarte: Etume - das Flusstal. Andere Userideen: Zauber der globalen Wunder

Benutzeravatar
Maverick123
Zauberer der Bergwiesen
Beiträge: 625
Registriert: 27. Nov 2005, 13:46

Re: Kleines Problem mit PHP

Beitrag von Maverick123 » 9. Apr 2013, 17:35

burning eagle hat geschrieben: (z.B. per Konstante, die in der Aufruf-Datei gesetzt wird)
Zum Beispiel könntest du in index.php vor dem Includen eine Konstante setzen:

http://php.net/manual/de/function.constant.php

Code: Alles auswählen

define("INCLUDED", true);    // der wert ist egal, du könntest es auch als "bla" oder 123 definieren, hauptsache es ist gesetzt.. man kann auch noch in der includeten datei überprüfen, ob die konstante auch den richtigen wert hat x)
Und in deiner Datei, die du included hast, schreibst du dann:

http://www.php.net/manual/de/function.defined.php

Code: Alles auswählen

if (defined("INCLUDED"))
{
    // inhalt
}
else
{
   // fehler, da die konstante nicht gesetzt wurde und die datei nicht included ist
}

So würde ich es jedenfalls machen, keine Ahnung ob das hübsch ist, da müsstest du bwoebi fragen :D
Alternativ geht das ganze auch mit einer einfachen Variable, die du vorher setzt und dann in der includeten Datei überprüfst.
BildHerbstwind - Welt 13

Benutzeravatar
Blue.Shark
großer Laubbär
Beiträge: 2864
Registriert: 5. Okt 2008, 21:27

Re: Kleines Problem mit PHP

Beitrag von Blue.Shark » 9. Apr 2013, 17:46

Dann kann ich ja gleich den Text den ich include an die Stelle rienkopieren^^ Ist zwar nicht übersichtlich aber was sollst.
Oder ich include news65935986559875987.php
Da kommt niemand drauf und kann daher auch nicht direkt zugreifen^^
Macht alle bei meinem Spiel mit -> Wörter raten
Meine aktuelle User-Idee: Errungenschaften auf Zeit
Meine Wunsch-Idee: Das Haus der Statistiken, Liebligskarte: Etume - das Flusstal. Andere Userideen: Zauber der globalen Wunder

Benutzeravatar
Cembon
Gelbbart-Yeti
Beiträge: 1793
Registriert: 6. Mai 2011, 19:09
Wohnort: Am See des Friedens
Kontaktdaten:

Re: Kleines Problem mit PHP

Beitrag von Cembon » 9. Apr 2013, 18:28

Das ist dann Sicherheit durch Verschleierung, richtig sicher ist es nicht, könnte ja doch jemand draufkommen.^^
Bild

Benutzeravatar
burning eagle
Zauberer der Bergwiesen
Beiträge: 663
Registriert: 12. Aug 2009, 21:17
Wohnort: W1
Kontaktdaten:

Re: Kleines Problem mit PHP

Beitrag von burning eagle » 10. Apr 2013, 22:26

Blue.Shark hat geschrieben:Dann kann ich ja gleich den Text den ich include an die Stelle rienkopieren^^ Ist zwar nicht übersichtlich aber was sollst.
Oder ich include news65935986559875987.php
Da kommt niemand drauf und kann daher auch nicht direkt zugreifen^^
Wie gesagt, solange du wenig Code hast, solltest du kein Problem mit Übersichtlichkeit bekommen.
Wenns dann mal >100 Seiten sind, die über die index.php aufgerufen werden, wirst du irgendwann die Vorteile vom includen erkennen. :twisted:
Von der Idee mit den Ziffern hinter dem Namen würde ich abraten... Brute Force ftw.

/edit: Für die saubere Lösung s. Mavericks Code.

Benutzeravatar
Blue.Shark
großer Laubbär
Beiträge: 2864
Registriert: 5. Okt 2008, 21:27

Re: Kleines Problem mit PHP

Beitrag von Blue.Shark » 19. Apr 2013, 21:41

Ich hab mal noch eine kleine Frage:
Folgender Beispielcode:

Code: Alles auswählen

<?php
	if($name == "Otto") {
?>
	Guten Tag Otto!
<?php
	}
	else{
?>
	Du bist nicht Otto!
<?php
	}
?>
Die Frage bezieht sich auf das Umklammern vom normalen Html Code mit einer PHP-if schleife indem man ständig die PHP-tags öffnet bzw. schließt.

Jetzt zur Frage: Ist folgender Code erlaubt? Bzw. hat er sicherheitslücken oder ist das eigentlich ganz ok wenn man es so macht? Oder ist er unsauber? Benutzt ihr das auch oder macht ihr alles mit echo?
Macht alle bei meinem Spiel mit -> Wörter raten
Meine aktuelle User-Idee: Errungenschaften auf Zeit
Meine Wunsch-Idee: Das Haus der Statistiken, Liebligskarte: Etume - das Flusstal. Andere Userideen: Zauber der globalen Wunder

Benutzeravatar
Cembon
Gelbbart-Yeti
Beiträge: 1793
Registriert: 6. Mai 2011, 19:09
Wohnort: Am See des Friedens
Kontaktdaten:

Re: Kleines Problem mit PHP

Beitrag von Cembon » 19. Apr 2013, 22:33

Sollte so funktionieren, ist aber jetzt nicht unbedingt die schönste Art und Weise.
z.B. wäre

Code: Alles auswählen

if($name == "Otto")
    echo "Guten Tag Otto!";
else
    echo "Du bist nicht Otto!";
kürzer und übersichtlicher ;)
Bild

bwoebi
Administrator
Beiträge: 3438
Registriert: 28. Apr 2008, 19:13

Re: Kleines Problem mit PHP

Beitrag von bwoebi » 19. Apr 2013, 23:25

Blue.Shark hat geschrieben:[...]

Die Frage bezieht sich auf das Umklammern vom normalen Html Code mit einer PHP-if schleife indem man ständig die PHP-tags öffnet bzw. schließt.

Jetzt zur Frage: Ist folgender Code erlaubt? Bzw. hat er sicherheitslücken oder ist das eigentlich ganz ok wenn man es so macht? Oder ist er unsauber? Benutzt ihr das auch oder macht ihr alles mit echo?
Der Code sollte ganz problemlos sein. Für einzelne Zeilen ist es am schönsten ohne den PHP-Kontext zu verlassen. (Siehe Cembons Post)

Für größere Textblöcke ist die Methode den PHP-Kontext zu verlassen besser, weil übersichtlicher mMn. Dafür gibt es übrigens eine Syntax die besser dafür geeignet ist finde ich:

Code: Alles auswählen

<?php if ($name == "Otto"): ?>
Guten Tag Otto!
<?php else: ?>
Du bist nicht Otto!
<?php endif; ?>
(Btw. ich hasse es alles zu echo'en, da muss dann immer alles voller Backslashes sein; man kann dann zwar auch heredoc/nowdoc nutzen, aber da kann man auch gleich aus PHP rausspringen...)
Bogs sind meine Spezialität - Signaturen sind eigentlich doch überflüssig...

Benutzeravatar
Cembon
Gelbbart-Yeti
Beiträge: 1793
Registriert: 6. Mai 2011, 19:09
Wohnort: Am See des Friedens
Kontaktdaten:

Re: Kleines Problem mit PHP

Beitrag von Cembon » 20. Apr 2013, 08:37

@bwoebi: Wenn man wie du immer "" für die String-Begrenzung nutzt, dann braucht man bei HTML ein paar Backslashes, ja ;)
Bild

Rober
Gelbbart-Yeti
Beiträge: 2231
Registriert: 21. Nov 2008, 16:40
Kontaktdaten:

Re: Kleines Problem mit PHP

Beitrag von Rober » 20. Apr 2013, 10:33

http://www.php.net/manual/de/language.t ... ax.heredoc

Und nowdoc (mittlerweile auch in PHP)

(achja, für mehrzeilige Ausgaben sinnvoll, für Einzeiler ist print,printf, bzw echo besser lesbar)
mfG Rober


_________________
destruktion ist konstruktion

bwoebi
Administrator
Beiträge: 3438
Registriert: 28. Apr 2008, 19:13

Re: Kleines Problem mit PHP

Beitrag von bwoebi » 20. Apr 2013, 11:07

Cembon hat geschrieben:@bwoebi: Wenn man wie du immer "" für die String-Begrenzung nutzt, dann braucht man bei HTML ein paar Backslashes, ja ;)
Auch wenn man mit single-quotes vollgespammtes Englisch schreibt...
Bogs sind meine Spezialität - Signaturen sind eigentlich doch überflüssig...

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste