php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.05.2005, 21:20  
Erfahrener Benutzer
 
Registriert seit: 25.05.2004
Beiträge: 229
lindner
lindner eine Nachricht über ICQ schicken
Standard sortierproblem //EDIT: sessionproblem

hallo liebe leute..

ich habe eine datei!!! diese liegt in einem ordner! wird diese datei in diesem ordner aufgerufen, dann zeigt sie den inhalt dieses ordners an!! quasi eine art kleiner browser. es macht seinen job gut.

PHP-Code:
<?php

if (!isset($_GET['dir']))
{
    
$startdir '.';
}
else
{
    
$startdir $_GET['dir'];
}
scan_dir($startdir);


function 
scan_dir($dir)
{
    
$DH dir($dir);
    while (
$file $DH->read())
    {
       if (
preg_match('/^..?$/'$file)) continue;
        
$aktuell "$dir/$file";
        if (
$file == '.'$file 'Aktuelles Verzeichnis';
        if (
$file == '..'$file '&Uuml;bergeordnetes Verzeichnis';
        if (
is_dir($aktuell))
        {
            echo 
"[img]../pic/img/folder.gif[/img][url='" $_SERVER[']$file[/url]
";
        }
        else
        {
            echo "[img]../pic/img/file.gif[/img][url='
$aktuell]$file[/url]
";
        }
    }
    $DH->close();
}

?>
jetzt wollte ich ein passwortschutz einrichten, per sessions. es kommt eigentlich nur ein weitere befehl rein, dort wo die session auf gültigkeit gebrüft wird

PHP-Code:
<?php
include ("checkuser.php");
?>
wieso werden jetzt auf einmal (vorher war es nicht so) die dateien in völlig ungeordneter reihenfolge angezeigt. wie könnte man die reihenfolge beeinflussen?!

für anregungen, warum überhaupt eine plötzliche, scheinbare unordnung der dateienauflistung passiert, würde ich mich auch freuen

grüße pat
lindner ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.05.2005, 21:22  
Gast
 
Beiträge: n/a
Standard

Erst mal die vorsichtige Frage, ob Du auch session_start(); verwendest, ggf könnte auch der Inhalt der checkuser.php interessant sein (wenn es nicht zu viel ist)
 
Alt 30.05.2005, 21:30  
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

Übrigens ist dein preg_match befehl falsch.

Es muss so heißen:
PHP-Code:
<?php
if (preg_match('/^\.{1,2}$/'$file)) continue; 
?>
Ansonsten fallen alle dateien mit 1 oder zwei zeichen im namen weg und das wollen wir doch nicht
Buhmann ist offline  
Alt 31.05.2005, 00:33  
Erfahrener Benutzer
 
Registriert seit: 25.05.2004
Beiträge: 229
lindner
lindner eine Nachricht über ICQ schicken
Standard

@PaterNoster

hier meine checkuser.php
PHP-Code:
<?php
session_start 
();
if (!isset (
$_SESSION["user_id"]))
{
  
header ("Location: index.php?fehler=1");
}

include(
"config.php"); // Datenbankverbindung wird dort aufgebaut

$var $_SESSION["user_forumname"];
$sql "SELECT * FROM `$tabelle` WHERE `Forumname` = '$var'";
$result mysql_query($sql) OR die(mysql_error(). '
.$sql);

$row mysql_fetch_row($result);
$rights $row[5];
?>
ich verstehe das problem eigentlich nicht!!

@Buhmann
wo genau liegt der unterschied zwischen
PHP-Code:
<?php
if (preg_match('/^\.{1,2}$/'$file)) continue;
?>
und
PHP-Code:
<?php
if (preg_match('/^..?$/'$file)) continue; 
?>
zwecks lerneffekt!!! es geht übrigens auch so ganz gut!!

vielen dank für eure bemühungen.
grüße pat
lindner ist offline  
Alt 31.05.2005, 06:06  
Gast
 
Beiträge: n/a
Standard

Zitat:
wie könnte man die reihenfolge beeinflussen?!
Ich würde bei scan_dir() mit Array() arbeiten.
Das kann man dann wunderbar sortieren.
 
Alt 31.05.2005, 12:34  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lindner
@Buhmann
wo genau liegt der unterschied zwischen
PHP-Code:
<?php
if (preg_match('/^\.{1,2}$/'$file)) continue;
?>
und
PHP-Code:
<?php
if (preg_match('/^..?$/'$file)) continue; 
?>
zwecks lerneffekt!!! es geht übrigens auch so ganz gut!!

vielen dank für eure bemühungen.
grüße pat
Die Versionen verwirren hier etwas. Das Proplem bei regulären Ausdrücken ist, dass der Punkt für ein beliebiges Zeiche stehen kann, und deshalb, falls explizit ein Punkt gemeint ist, maskiert werden muss. Man könnte damit deinen Ausdruck auch so schreiben:
PHP-Code:
<?php
if (preg_match('/^\.\.?$/'$file)) continue;
?>
Im übrigen macht es keinen Sinn, wenn du hier continue aufrufst, und dann nochmals auf ".", bzw. ".." abfrägst.
Warum die Dateien nicht richtig sortiert werden, kann ich dir nicht sagen. Wenn ich deinen Code - ob mit oder ohne "include checkuser" - starte, erhalte ich eine sortierte Liste.
__________________
Gruss
L
lazydog ist offline  
Alt 31.05.2005, 12:47  
Erfahrener Benutzer
 
Registriert seit: 25.05.2004
Beiträge: 229
lindner
lindner eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von lazydog
Wenn ich deinen Code - ob mit oder ohne "include checkuser" - starte, erhalte ich eine sortierte Liste.
das ist bei mir bis jetzt auch so gewesen. ich habe das jetzt mal noch anders probiert. ich habe den include rausgenommen. damit ist die datei zwar nicht pw geschützt, aber das ist erst mal egal.

ich habe also eine login datei, gebe dort daten ein und werde dann per
PHP-Code:
<?php
header 
("Location: datei.php");
?>
weitergeleitet. in der datei.php steckt das obere script - UNVERÄNDERT ohne checkuser.php include!!! trotzdem wird die liste durcheinander angezeigt!!

@CIX88
Zitat:
Zitat von CIX88
]Ich würde bei scan_dir() mit Array() arbeiten.
Das kann man dann wunderbar sortieren.
hättest du da einen vorschlag??

viele grüße
lindner ist offline  
Alt 31.05.2005, 12:59  
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

ich hab einen vorschlag für scan_dir:

http://www.php.net/scan_dir
robo47 ist offline  
Alt 31.05.2005, 13:16  
Erfahrener Benutzer
 
Registriert seit: 25.05.2004
Beiträge: 229
lindner
lindner eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von robo47
ich hab einen vorschlag für scan_dir:

http://www.php.net/scan_dir
cool das hilft mir ganz gut.. ich habe jetzt auch das sortierproblem einigermaßen gelöst..

jetzt habe ich aber plötzlich ein anderes problem mit meinem loginscript!!!
kurze beschreibung: ich log mich ein mit pw und user. werde dann wie gesagt per header zur datei.php weitergeleitet. dann wird der inhalt des ordners angezeigt --> ich könnte also auch auf einen unterordner klicken. tue ich das, ist meine session plötzlich beendet und ich werde rausgeschmissen!! gibt es bestimmte kriterien, wann eine session beendet wird?!

warum?? es ist doch die selbe datei!!

hier meine login.php

PHP-Code:
<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen

include("config.php");  // Datenbankverbindung wird dort aufgebaut

$sql "SELECT ".
    
"Id, Username, Nachname, Vorname, rights ".
  
"FROM
    login
  WHERE "
.
    
"(username like '".$_REQUEST["name"]."') AND ".
    
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result mysql_query ($sql);

if (
mysql_num_rows ($result) > 0)
{
  
// Benutzerdaten in ein Array auslesen.
  
$data mysql_fetch_array ($result);

  
// Sessionvariablen erstellen und registrieren
  
$_SESSION["user_id"] = $data["Id"];
  
$_SESSION["user_username"] = $data["username"];
  
$_SESSION["user_nachname"] = $data["Nachname"];
  
$_SESSION["user_vorname"] = $data["Vorname"];
  
$_SESSION["user_rights"] = $data["rights"];

  
header ("Location: datei.php");
}
else
{
  
header ("Location: index.php?fehler=1");
}
?>
ob das nun das beste loginscript ist, darüber lässt sich sicher streiten, darum gehts auch net!!
checkuser.php siehe oben!!

grüße
lindner ist offline  
 


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
Sortierproblem PHP Tipps 2007 10 18.01.2006 19:07
Eigentlich simples Sessionproblem PHP Tipps 2005 10 09.05.2005 12:22
Sessionproblem mit IE DannyD PHP Tipps 2005 19 09.04.2005 18:29
[Erledigt] Wieder einmal ein Sortierproblem: ORDER BY DESC 2x PHP Tipps 2005 6 01.02.2005 10:30
sortierproblem PHS Datenbanken 7 07.11.2004 19:17
Merkwürdiges Sessionproblem PHP-Fortgeschrittene 5 23.08.2004 15:03
[Erledigt] Brauser/Einstellungsproblem, Sessionproblem? Off-Topic Diskussionen 2 03.08.2004 23:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php session plötzlich beendet, scan_dir durcheinander

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