php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.01.2012, 22:14  
Benutzer
 
Registriert seit: 28.08.2011
Beiträge: 80
PHP-Kenntnisse:
Anfänger
kasseljulian befindet sich auf einem aufstrebenden Ast
Standard PHP Ordner auslesen wie $_GET

Guten Abend liebe Mitglieder,

mod_rewrite ist eine nette Funktion, doch grüble ich seit nun über einer Stunde darüber nach, wie ich eine Auslesung von einem unbekannten Verzeichnis vornehme.
Z.B rufe ich das Verzeichnis "hallo/123456" auf. Dann muss ich in der index.php überprüfen:
Code:
if($_SERVER['REQUEST_URI'] == 'hallo/["/([0-9]+)([a-z]+)/i"]'){
 // dann gebe mir die angeforderte Zeichenkette wieder
}
In meinem Beispiel ist die Zeichenkette oben nur eine "Programm-Skizze", es würde so nicht funktionieren, deshalb wende ich mich an euch.
Ich hoffe das Prinzip ist klar; ich rufe ein Verzeichnis mit einer Zeichenkette als Unterverzeichnis auf und möchte dann das Unterverzeichnis via echo ausgeben.
Wenn das ganze auf $_GET basieren würde, wäre es kein Problem.
Aber warum einfach, wenn es auch kompliziert geht

Zusammengefasst, I´m searching for:
-Überprüfung auf eine Zeichenkette
-Ordner-Variante für $_GET, sodass ich ein gefordertes Verzeichnis auslesen kann


Hat soetwas schon jemand mal gemacht? Falls ja, bin ich zutiefst dankbar über Hilfe.

Liebe Grüße
kasseljulian ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.01.2012, 23:02  
Erfahrener Benutzer
 
Registriert seit: 03.04.2010
Beiträge: 191
PHP-Kenntnisse:
Anfänger
Suralc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von kasseljulian Beitrag anzeigen
Zusammengefasst, I´m searching for:
-Überprüfung auf eine Zeichenkette
-Ordner-Variante für $_GET, sodass ich ein gefordertes Verzeichnis auslesen kann
1) preg_* Funktionen(RegEx) bzw. strpos, stripos, etc...(Basis Stringfunktionen, je nachdem was du machen willst)
2) Keine Ahnung was du willst. Grob geraten: readdir, opendir, DirectoryIterator, Ansonsten erläutere das nochmal näher
__________________
Zitat:
Zitat von nikosch Beitrag anzeigen
Naja, anscheinend spricht die Steckdose kein HTTP. LOL
Suralc ist offline   Mit Zitat antworten
Alt 28.01.2012, 23:26  
Benutzer
 
Registriert seit: 28.08.2011
Beiträge: 80
PHP-Kenntnisse:
Anfänger
kasseljulian befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Suralc Beitrag anzeigen
1) preg_* Funktionen(RegEx) bzw. strpos, stripos, etc...(Basis Stringfunktionen, je nachdem was du machen willst)
2) Keine Ahnung was du willst. Grob geraten: readdir, opendir, DirectoryIterator, Ansonsten erläutere das nochmal näher
Ich erklärs dir gerne nochmal:
Mit mod_Rewirte simuliere ich ein Verzeichnis und rufe es anschließend mit einem "Parameter", der allerdings in diesem Fall ein Unterverzeichnis ist, auf. Z.B. domain.de/unterverzeichnis/1234
Nun möchte ich den "Parameter", der hier das Unterverzeichnis 1234 ist, auslesen.

Leider sind die von dir genannten Funktionen nicht das, was ich suche. Mit den Funktionen überprüfe ich, ob ein String auf eine Zeichenkette zutrifft, doch ich möchte fragen:
"Ist der Ordner /verzeichnis/'Egal welcher Wert' aufgerufen worden"?
'Egal welcher Wert' steht dabei für die Zeichenkette.
Wenn ja, gebe mir die angeforderte Zeichenkette aus.

Um es vielleicht zu verdeutlichen; wenn ich das gewünschte Unterverzeichnis wüsste, könnte ich fragen:
Ist das angeforderte Verzeichnis "/unterverzeichnis/1234"?
if ja, dann geb´s mir aus.
Das, was jetzt knoblig ist, ist das, 1234 eine nicht definierbare Variable ist, die jederzeit änderbar ist, quasi wie bei get (page.php?unterverzeichnis=1234) und dann soll mir das gewünschte Unterverzeichnis ausgegeben werden.
Das ist komplizierter zu erklären, als es umzusetzen vermute ich

Ich hoffe es ist klarer!?

Geändert von kasseljulian (28.01.2012 um 23:40 Uhr).
kasseljulian ist offline   Mit Zitat antworten
Alt 28.01.2012, 23:37  
Erfahrener Benutzer
 
Registriert seit: 03.04.2010
Beiträge: 191
PHP-Kenntnisse:
Anfänger
Suralc befindet sich auf einem aufstrebenden Ast
Standard

Sorry, heute Abend kann ich anscheinend nicht mehr logisch Schlussfolgern.

PHP-Code:
<?php
// funktioniert nur, wenn kein "/" am Ende steht, ansonsten musst du selber rumbasteln.
$string 'http://domain.de/unterverzeichnis/1234';
$parameter end(explode('/'$string);
Im Forum getippt, keine Garantie, das es das ist, was du willst, das wars aber für mich heute
__________________
Zitat:
Zitat von nikosch Beitrag anzeigen
Naja, anscheinend spricht die Steckdose kein HTTP. LOL
Suralc ist offline   Mit Zitat antworten
Alt 28.01.2012, 23:43  
Benutzer
 
Registriert seit: 28.08.2011
Beiträge: 80
PHP-Kenntnisse:
Anfänger
kasseljulian befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Suralc Beitrag anzeigen
Sorry, heute Abend kann ich anscheinend nicht mehr logisch Schlussfolgern.

PHP-Code:
<?php
// funktioniert nur, wenn kein "/" am Ende steht, ansonsten musst du selber rumbasteln.
$string 'http://domain.de/unterverzeichnis/1234';
$parameter end(explode('/'$string);
Im Forum getippt, keine Garantie, das es das ist, was du willst, das wars aber für mich heute
Danke, das ist komplett richtig, die Auslesung und Zerteilung des Strings. Aber wie überprüfe ich, ob das Verzeichnis /unterverzeichnis/1234 aufgerufen wurde? Wobei sich "1234" ständig ändern kann?

PS: Schätze da bist du heute nicht allein, mein Kopf ist auch nicht mehr klar
Aber wie gesagt, das ist viel komplizierter zu erklären, als es umzusetzen.

PS 2: Die Funktion explode benötigt in deinem Beispiel noch die Klammer zu

Geändert von kasseljulian (28.01.2012 um 23:47 Uhr).
kasseljulian ist offline   Mit Zitat antworten
Alt 29.01.2012, 00:19  
Erfahrener Benutzer
 
Registriert seit: 03.04.2010
Beiträge: 191
PHP-Kenntnisse:
Anfänger
Suralc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von kasseljulian Beitrag anzeigen
PS 2: Die Funktion explode benötigt in deinem Beispiel noch die Klammer zu
Wie gesagt nur im Forum getippt.

Zitat:
Danke, das ist komplett richtig, die Auslesung und Zerteilung des Strings. Aber wie überprüfe ich, ob das Verzeichnis /unterverzeichnis/1234 aufgerufen wurde? Wobei sich "1234" ständig ändern kann?
Array mit prev von hinten nach vorne durchgehen, angenommen du hast etwas im Format:

Code:
<urlparts>/<dir>/<id>[/]
Ein bisschen weiter Gedacht, allerdings bringe ich heute nichts mehr zusammen(keine Garantien für Klammern und Syntaxfehlern, nur im Forum getippt):

PHP-Code:
<?php
function normalize($url){
    return (
strpos($url'/', (strlen($url) - 1)) == true) ? substr($url0strlen($url) -): $url;
}
function 
isValidDir($url$validDirs = array()){
    
$urlParts explode('/'$url);
    
$id end($urlParts);
    
$dir prev($urlParts);
    if(
in_array($dir,$validDirs) == true){
        return 
$id;
    }
    return 
false;
}
$arrayOfUrls = array();
$arrayOfUrls[] = 'http://example.com/documents/some1337';
$arrayOfUrls[] = 'http://example.com/outSideOfDocuments/id/';
$arrayOfUrls[] = 'http://demo.com/otherDocumentFolder/anOtherValidId/';
$validDirs = array('documents''otherDocumentFolder');
foreach(
$arrayOfUrls as $url){
    if((
$id isValidDir(normalize($url), $validDirs)) !== false){
        echo 
"Gültig id: $id";
    }
    else{
        echo 
"$url ist nicht gültig";
    }
    echo 
"<br />\n";
}
__________________
Zitat:
Zitat von nikosch Beitrag anzeigen
Naja, anscheinend spricht die Steckdose kein HTTP. LOL

Geändert von Suralc (29.01.2012 um 11:58 Uhr).
Suralc ist offline   Mit Zitat antworten
Alt 29.01.2012, 00:24  
Benutzer
 
Registriert seit: 28.08.2011
Beiträge: 80
PHP-Kenntnisse:
Anfänger
kasseljulian befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Suralc Beitrag anzeigen
Wie gesagt nur im Forum getippt.


Array mit prev von hinten nach vorne durchgehen, angenommen du hast etwas im Format:

Code:
<protocol>://<host>/<dir>/<id>[/]
Ein bisschen weiter Gedacht, allerdings bringe ich heute nichts mehr zusammen(keine Garantien für Klammern und Syntaxfehlern, nur im Forum getippt):

PHP-Code:
<?php
function normalize($url){
    return (
strpos($url'/', (strlen($url) - 1)) == true) ? substr($url0strlen($url) -): $url;
}
function 
isValidDir($url$validDirs = array()){
    
$urlParts explode('/'$url);
    
$id end($urlParts);
    
$dir prev($urlParts);
    if(
in_array($dir,$validDirs) == true){
        return 
$id;
    }
    return 
false;
}
$string[] = 'http://example.com/documents/some1337';
$string[] = 'http://example.com/outSideOfDocuments/id/';
$string[] = 'http://demo.com/otherDocumentFolder/anOtherValidId/';
$validDirs = array('documents''otherDocumentFolder');
foreach(
$string as $url){
    if((
$id isValidDir(normalize($url), $validDirs)) !== false){
        echo 
"Gültig id: $id";
    }
    else{
        echo 
"$url ist nicht gültig";
    }
    echo 
"<br />\n";
}
Danke für die Bemühung. Vom Ansatz sieht´s auch gut aus, doch bekomme ich einen Error:
Fatal error: [] operator not supported for strings

Leider ist mir gerade auch keine Lösung eingefallen
kasseljulian ist offline   Mit Zitat antworten
Alt 29.01.2012, 00:33  
Erfahrener Benutzer
 
Registriert seit: 03.04.2010
Beiträge: 191
PHP-Kenntnisse:
Anfänger
Suralc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von kasseljulian Beitrag anzeigen
Danke für die Bemühung. Vom Ansatz sieht´s auch gut aus, doch bekomme ich einen Error:
Fatal error: [] operator not supported for strings

Leider ist mir gerade auch keine Lösung eingefallen
Bei mir Funktionierts(PHP 5.3.9).

Ist $string bei dir ein Array, oder hast du nur einen einzelnen String dort stehen?(Ja, seltendämliche Namensgebung).

edit: habs oben mal ausgebessert
__________________
Zitat:
Zitat von nikosch Beitrag anzeigen
Naja, anscheinend spricht die Steckdose kein HTTP. LOL
Suralc ist offline   Mit Zitat antworten
Alt 29.01.2012, 11:27  
Benutzer
 
Registriert seit: 28.08.2011
Beiträge: 80
PHP-Kenntnisse:
Anfänger
kasseljulian befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Suralc Beitrag anzeigen
Bei mir Funktionierts(PHP 5.3.9).

Ist $string bei dir ein Array, oder hast du nur einen einzelnen String dort stehen?(Ja, seltendämliche Namensgebung).

edit: habs oben mal ausgebessert
Vielen Dank, es funktioniert.
Zwei allgemeine Fragen habe ich noch:
-Kann ich das Letzte Vorkommen eines / (Slash) in der URL mit einer Funktion in PHP entfernen?
Im Beispiel:
domain.de/test/ sollte domain.de/test werden.
Quasi str_replace für das letzte Slash in der URL.
-Ist es möglich, bei mod_rewrite auch eine index.php vorzusimulieren, sodass ein Aufruf mit normalen Parametern möglich wäre:
Im Beispiel:
domain.de/unterverzeichnis/?id=1234
Der Vorteil daran ist, dass ich x-beliebig viele Parameter anhängen könnte:
domain.de/unterverzeichnis/?id=1234&parameter1=HALLO$parameter2=SCHOENER_TAG
Das ganze könnte dann mit dem normalen $_GET Befehl funktionieren!?
Ich vermute mal weniger, aber eine Frage ist es mir wert.

Liebe Grüße und vielen herzlichen Dank
kasseljulian ist offline   Mit Zitat antworten
Alt 29.01.2012, 11:47  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Zitat:
-Kann ich das Letzte Vorkommen eines / (Slash) in der URL mit einer Funktion in PHP entfernen?
rtrim
Zitat:
-Ist es möglich, bei mod_rewrite auch eine index.php vorzusimulieren, sodass ein Aufruf mit normalen Parametern möglich wäre
Wieso nicht alle parameter "umschreiben" - deswegen nutzt man doch mod_rewrite, so dass die url nicht kryptisch aussieht. Keine Ahnung, was du mit vorsimulieren genau meinst.
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Antwort


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
[Erledigt] NUR Ordner auslesen adminlukas PHP Tipps 2010 4 28.08.2010 12:33
[Erledigt] nur bestimmte anzahl an bildern aus ordner auslesen maboe PHP Tipps 2009 20 01.09.2009 01:06
[Erledigt] readdir(): Ordner datein auslesen t-stude PHP Tipps 2009 11 16.08.2009 16:37
Ordner auslesen DarkManX JavaScript, Ajax und mehr 3 28.07.2009 23:09
verzeichnis auslesen und letzten Ordner als Menüpunkt Black_Sheep PHP Tipps 2009 20 13.03.2009 12:49
Mehrere Ordner auslesen, klappt nicht so ganz :( stayInside PHP Tipps 2009 21 11.02.2009 14:59
Ordner auslesen und während des auslesen sortieren Dooki PHP Tipps 2008 6 14.05.2008 17:50
TreeMenu Fatal Error PHP Tipps 2006 8 07.04.2006 11:22
Unter ordner und Files automatisch auslesen lichtscheu PHP Tipps 2006 6 09.03.2006 19:19
Ordner auslesen PHP Tipps 2005-2 12 03.07.2005 16:43
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
Ordner auslesen - Zusätzliche Bildplatzhalter PHP Tipps 2005 8 21.05.2005 12:25
Fehler bei Auslesen von Ordnernamen und datein im ordner PHP-Fortgeschrittene 3 11.12.2004 13:25
ordner in einem verzeichnis auslesen und anzeigen lindner PHP Tipps 2004 5 19.08.2004 00:03
Ordner Auslesen PHP Tipps 2004 3 03.07.2004 09:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ordner auslesen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:42 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