php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.03.2005, 16:14  
Gast
 
Beiträge: n/a
Standard Kleine PHP-Gallery -> Frage zu Variablen

Hallo, ich habe ein kleines PHP Script für eine simple Web Gallery geschrieben.

Sourcecode einsehbar unter: http://echizen.ec.funpic.de/


Da ich zuvor noch nicht unter PHP programmiert habe, habe ich ein paar Fragen zum Variablenzugriff. Beim Script werden einige Variablen beim Aufruf mitübergeben und dann weiterverwendet:

gallery.php?show=index&event=Example Gallery


Was mir ein wenig Bauchschmerzen bereitet sind Stellen wie diese hier:

if(($show == 'index') && (file_exists($event)))

funktioniert genau so wie auch

if(($show == 'index') && (file_exists("$event")))

Welche Variante wäre die sauberste? $event wäre in diesem Fall Example Gallery. Müsste die Variable demnach nicht wenigstens in "" stehen?


Außerdem wäre da noch die Sache mit register_globals on/off. Um das Problem zu umgehen habe ich derzeit extract($_REQUEST); drin. Aber das soll wohl auch nicht die ordentlichste Methode sein.

Gerne nehme ich auch andere Verbesserungsvorschläge entgegen.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.03.2005, 16:20  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

if(($_GET['show'] == 'index') && (file_exists($_GET['event'])))

ist immernoch die sauberste methode
Buhmann ist offline  
Alt 03.03.2005, 16:22  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

krass ein mensch der es freiwillig ohne register globals = on amchen will :P

http://www.phpfriend.de/ftopic26569.html

if(($show == 'index') && (file_exists("$event")))

wozu die " sie sind einfach nur unnötig, da du ja direkt auf eine variable zugreifst, nicht auf einen string mit ner variable drin.

und nach möglichkeit variablen die via POST oder GET übergeben werden immer erst mit isset() prüfen, nicht so sachen machen if ($var = 'asdf') oder if ($var).

am besten am anfang deines scriptes error_reporting(E_ALL); schreiben dann siehst du schon was unsauber programmiert ist.

mfg
robo47
robo47 ist offline  
Alt 03.03.2005, 19:03  
Gast
 
Beiträge: n/a
Standard

Danke für die schnellen Antworten.

Eine Frage habe ich noch. Warum sollte man unbedingt mit isset vorher prüfen?


reicht nicht:

if(

($_GET['show'] == 'index')

&&

(file_exists($_GET['event']))

)


anstatt:

if(

(isset($_GET['show']) && $_GET['show'] == 'index')

&&

(isset($_GET['event']) && file_exists($_GET['event']))

)
 
Alt 03.03.2005, 19:41  
Erfahrener Benutzer
 
Registriert seit: 08.06.2004
Beiträge: 865
RudiS
Standard

Nein, da PHP meckern wird, wenn $_GET['show'] nicht vorhanden ist. Immer erst prüfen ob eine Variable vorhanden ist und dann damit weiterarbeiten.
mfg RudiS
__________________
Kunst kommt von Können und nicht von wollen, denn sonst würde es ja Wunst heißen.
RudiS ist offline  
Alt 03.03.2005, 22:38  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum.

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

moved to PHP - Anfänger
__________________
mod = master of disaster
Waq ist offline  
Alt 03.03.2005, 23:38  
Gast
 
Beiträge: n/a
Standard

Bedeutet das nicht, dass man auch alle anderen normalen Variablen prüfen muss? Nicht nur die, die übergeben werden, sondern auch die die nicht beim Aufruf mitübergeben werden sollen.
 
Alt 04.03.2005, 06:21  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

Zitat:
Bedeutet das nicht, dass man auch alle anderen normalen Variablen prüfen muss? Nicht nur die, die übergeben werden, sondern auch die die nicht beim Aufruf mitübergeben werden sollen.
variablen, die du im script selber anlegst - die also 100%ig existieren - brauchst du nicht auf existenz prüfen. alle anderen ($_POST, $_COOKIE, $_SESSION, ...) schon.
__________________
derHund ist offline  
Alt 04.03.2005, 15:27  
Gast
 
Beiträge: n/a
Standard

Aber dass die Variablen 100% existieren, schließt doch nicht aus, dass man sie beim Script-Aufruf mitangeben bzw. falsch angeben kann?


Die if-Abfragen sind natürlich um weiten länger als zuvor. Würde das Script so wie es ist, sowohl mit register_globals on als auch off funktionieren?


Ich habe mir gerade PHP 5.0.3 installiert. "Undefined variable: event" Auf dem Webspace funktioniert's. Und wenn ich in das Scipt extract($_REQUEST); reinpacke, dann geht es in beiden Fällen. Also irgendwas ist die anscheinend noch nicht korrekt.

if((isset($_GET['show']) && $_GET['show'] == 'index') && (isset($_GET['event']) && file_exists($_GET['event'])))

Die Prüfung für event ist doch die selbe wie für show. Warum aber liefert mir PHP für event eine Fehlermeldung?
 
Alt 04.03.2005, 16:14  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von echizen
Der neue Sourcecode sieht nun so aus: http://echizen.ec.funpic.de/newsource.html

Ich habe mir gerade PHP 5.0.3 installiert. "Undefined variable: event"
Klar, die Meldung kommt, wenn register_globals = Off ist.

Falsch:
PHP-Code:
<?php
   $eventfolder 
opendir($event);
?>
Richtig:
PHP-Code:
<?php
   $eventfolder 
opendir('./' $_GET['event']);
?>
Ob es noch mehr Fehler gibt, habe ich nicht kontrolliert.

EDIT:
Das ist auch falsch:
PHP-Code:
<?php
if((isset($_GET['show']) && $_GET['show'] == 'index') && (isset($_GET['event']) && file_exists($_GET['event']))) 
?>
Richtig:
PHP-Code:
<?php
if((isset($_GET['show']) && $_GET['show'] == 'index') && (isset($_GET['event']) && file_exists'./' $_GET['event']))) 
?>
file_exists & Co. möchten nicht nur den Filenamen sondern auch den Pfad dazu. ./ kennzeichnet das aktuelle Verzeichnis.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variablen Frage krackmoe PHP Tipps 2008 11 13.07.2008 16:13
kleine Frage zu Einfärben von Kategorie cybermailer PHP Tipps 2008 21 05.05.2008 14:42
unerklärliches Leeren von Variablen KuShi PHP Tipps 2007 2 08.07.2007 15:19
Kleine Frage zu WHERE Klausel in SQL String Plague Datenbanken 1 09.08.2006 11:23
kleine array/session frage function PHP Tipps 2006 1 09.06.2006 19:00
kleine frage zu function PHP Tipps 2005-2 9 14.10.2005 10:59
Frage zur Sicherheit von GET Variablen malaga PHP Tipps 2005-2 3 20.09.2005 13:36
kleine Frage zu "ORDER BY" [erledigt] PHP Tipps 2005-2 21 23.08.2005 15:18
kleine frage zu funtionen PHP Tipps 2005-2 3 08.08.2005 00:27
usort Funktion, kleine Frage zur Arbeitsweise. PHP Tipps 2005-2 4 25.07.2005 23:08
Kleine kurze Frage PHP-Fortgeschrittene 4 13.02.2005 22:16
hi,habe eine klitze kleine frage :P Skazi PHP Tipps 2005 9 08.02.2005 15:05
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
kleine frage zu ip sperre PHP Tipps 2004-2 5 15.12.2004 19:01
[Erledigt] Kleine Frage PHP Tipps 2004 29 02.07.2004 18:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kleine php galerie, kleine php gallery, kleines gallery php, php gallery code

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.