Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Zugriff und Authoriesierungs Problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zugriff und Authoriesierungs Problem


 
AnNo1968
28-02-2008, 17:36 
 
Hallo,

ich suche eine Lösung für folgendes Problem:

Ein Shop liegt im / des Verzeichnises www vom Webserver. Habe einen Link den nur eingeloggte Shop-Benutzer sehen.

Über diesen Link öffnet sich ein neues Fenster. Dort erscheint eine Index- Seite wo der Benutzer sich in ein auf PHPatm bassierendes upload-script registriern und einloggen kann.

Das mit dem erneuten registrieren und einloggen soll auch so sein. Alles funktioniert.

Der Benutzer kann nach Registrierung in seinem eigenen Bereich Dateien uploaden, Verzeichnisse anlegen,
wenn er eingeloggt ist.

Das upload-script benutzt zur User-verwaltung keine Datenbank!! Und liegt im /eigenen verzeichnis.

Mein eigentliches Problem ist, dass wenn ich den Pfad zum upload-script in die Adresszeile des Browsers eingebe erscheint die Index-Seite des upload-scripts auch wenn ich nicht im Shop angemeldet bin.

Das möchte ich verhindern. In diesem Fall soll die Startseite des Shops erscheinen.

Nur wenn man im Shop eingeloggt ist, und den Link sieht, das neue Fenster öffnet soll die Login-Seite des upload-scripts erscheinen.


Wie löse ich dieses Problem?

Was muss ich wo wie ändern damit es so Funktioniert wie beschrieben?

Gibt es eine einfache Möglichkeit das ohne großen Programmieraufwand zu lösen?

Wenn möglich bitte mit ausführlicher Erklärung für PHP-Newbie.

Danke für eure Hilfe.

 
Kropff
28-02-2008, 17:55 
 
leg beim einloggen eine session (http://www.php-resource.de/handbuch/ref.session.htm) an, in der du den status abspeicherst. den kannst du auf den entsprechenden seiten dann abfragen.

gruß
peter

 
AnNo1968
29-02-2008, 18:07 
 
Hallo Peter

Herzlichen Dank für den Tipp mit den Sessions.

Der Shop stetzt ja schon Sessions ein.

So habe ich auf der Seite mit dem Link im Shop einfach die SID so übergeben:


echo
"<a href=\"http://meineDomäne/upload/login.php?' . SID . '\" target=\"_new\">hier geht es zum upload</a>";


im /upload Verzeichnis habe ich eine .htaccess Datei mit folgenden Inhalt:

DirectoryIndex start.php

die start.php im /uplod Verzeichnis:


<?php
if (isset ($_POST[session_name()]))
{
header("Location: http://meineDomäne/shop/upload/index.php");
}
else
{
header("Location: http://meineDomäne/shop/index.php");
}
?>


Wenn ich jetzt die URL zum upload-script im Browser eingebe und nicht im Shop eingeloggt bin erscheint die Startseite vom Shop.

Wenn ich im Shop eingeloggt bin und im Shop auf den Link zum upload-script anklicke öffnet sich im neuen Fenster die Startseite des upload-scripts.

So sollte es auch sein.

Nur gibt es noch einen Fehler:

Wenn ich im Shop eingeloggt bin das Upload-script im neuen Fenster öffne und dann das neue Fenster wieder schließe. Aus dem Shop auslogge.

Dann im Browser http://meineDomäne/shop/upload/index.php?' . SID . ' eingebe.

Erscheint die Startseite des upload-scripts. Das soll aber nicht sein. Da ich ja nicht im Shop eingeloggt bin.

Wie behebe ich diesen Fehler???

Wenn möglich bitte mit ausführlicher erklärung für PHP-Newbie

Danke

 
Kropff
29-02-2008, 18:19 
 
Erscheint die Startseite des upload-scripts. Das soll aber nicht sein. Da ich ja nicht im Shop eingeloggt bin.
da wird das session-cookie wohl anderer meinung sein. was machst du denn beim ausloggen? die session zerstören?

gruß
peter

 
AnNo1968
29-02-2008, 18:26 
 
Session zerstören.

Was meinst du den damit :confused:

Wie und wo mache ich das am besten. ???

Der Shop besitz eine logout.php, ist diese Datei der richtige ansatz ???

Wie gesagt ich bin PHP-Newbie

 
jahlives
29-02-2008, 19:52 
 
echo
"<a href=\"http://meineDomäne/upload/login.php?' . SID . '\" target=\"_new\">hier geht es zum upload</a>";


Du bist dir aber schon bewusst, dass du den String SID und nicht die Konstante SID verwendet hast?
Ein Tipp: Strings sollten in ' und ' geschrieben werden, weil du dann bei HTML Attributen nicht escapen musst und gezwungen bist Variabeln und Strings korrekt zu verknüpfen ;)
Und ein strip_tags() sollte auch nicht fehlen.

echo
'<a href="http://meineDomäne/upload/login.php?'.strip_tags(SID).'" target="_new">hier geht es zum upload</a>';


Gruss

tobi

 
AnNo1968
29-02-2008, 19:59 
 
Ich hab in der logout.php vom Shop

session_destroy();
eingetragen.

Der Fehler bleibt bestehen:


Dann im Browser

http://meineDomäne/shop/upload/index.php?' . SID . '
eingebe.

Erscheint die Startseite des upload-scripts. Das soll aber nicht sein. Da ich ja nicht im Shop eingeloggt bin..

:confused: :dontknow:

Was kann oder muss noch machen, damit der Fehler behoben ist ???

Danke

 
Kropff
29-02-2008, 20:21 
 
das mit dem session-plätten ist so eine sache. da muss man zu radikalen methoden greifen:

$_SESSION = array();
session_unset();
session_destroy();

sicher ist sicher :)

gruß
peter

 
AnNo1968
29-02-2008, 20:58 
 
@tobi

vielen Dank für den Tipp. Hab ihn gleich umgesetzt.

@peter

hab die radikalen methoden verwendet.

Das Problem bleibt leider weiter bestehen :confused: :dontknow:

 
Kropff
29-02-2008, 21:31 
 
Das Problem bleibt leider weiter bestehen
dann hast du einen fehler gemacht. zeig mal den relevanten code der logout.php und den validierungscode in der upload/index.php.

gruß
peter

 
AnNo1968
03-03-2008, 14:38 
 
Hallo Peter

der Bereich in der /shop/logout.php wo die Session beendet wird:


// Session End

$SESSION = array();
session_unset();
session_destroy();


der validierungs Bereich in der /upload/index.php:


if (isset ($_POST[session_name()]) && ($session_started == false))
{
header("Location: http://meineDomäne/shop/index.php");
}
else
{
// In diesem Bereich steht der eigentliche Inhalt der /upload/index.php
}


Gruß Andreas

 
Kropff
03-03-2008, 17:01 
 
dann wird deine bedingung falsch sein
if (isset ($_POST[session_name()]) && ($session_started == false))
warum nicht so was in der art?
if (!isset ($_SESSION['user'))

gruß
peter

 
AnNo1968
03-03-2008, 20:21 
 
warum nicht so was in der art?


if (!isset ($_SESSION['user'))

Wenn ich es in der Art mache, bekomme ich wenn im Shop eingeloggt bin und vom Link das upload-script im neuen Fenster
öffnen will wieder nur den Shop angezeigt und nicht das upload-script.

Der Link auf der Seite im Shop schaut so aus:



echo
'<a href="http://meineDomäne/upload/login.php?'.strip_tags(SID).'" target="_new">hier geht es zum upload</a>';

Gruß Andreas

 
AnNo1968
04-03-2008, 18:02 
 
Wenn die Session einen Namen hat wie:

session_name('abc');

Muss ich dann auf der Seite im Shop mit dem Link zum upload Script den Namen der Session auch angeben
wenn ich einen Wert in eine Variable setzen will. So etwa:


session_name('abc');
session_start();
if (empty($_SESSION['meinevar'])) {
$_SESSION['meinevar'] = 'meinwert';
}


Oder ist das Falsch? Wo mache ich einen Script- und/oder Denk-Fehler?

Wenn ich dann in der /upload/index.php Abfrage ob diese Variable existiert muss ich dann auch den Namen
der Session mit angeben. So etwa:


session_name('abc');
session_start();
if (!isset($_SESSION['meinevar']))
{
header("Location: http://meineDomän/shop/index.php");
}
else
{
//Hier steht der eigentliche Inhalt der /upload/index.php
}


Oder ist das Falsch ? Wo mache ich einen Script- und/oder Denk-Fehler?

Und wie übergebe ich dann die Variable "meinevar" von der Seite im Shop mit dem Link an
die /upload/index.php?

Vielen Dank für eure Hilfe

Gruß Andreas

 
AnNo1968
05-03-2008, 19:34 
 
Ich hoffe das mir ein Foren User folgendes Phänomen erklären kann:

Szenario 1:

Code der Datei /upload/index.php

/**********************************************************
if (!isset($_SESSION['meinevar']))
{
header("Location: http://meineDomäne/shop/index.php");
}
else
{
************************************************************/
Hier steht der eigentliche Code der /upload/index.php
//}


Code der Datei /upload/view.php

echo "<br>";
echo $_SESSION['fredel_status']['fredel_status_name'];
echo "<br>";
echo $_SESSION['fredel_status']['fredel_status_id'];
echo "<br>";
echo "<br>";
if (isset($_SESSION['meinevar']))
{
echo $_SESSION['meinevar'];
}
else
{
echo "Variable meinevar nicht da";
}


Code der Datei /upload/test.php

if (isset($_SESSION['meinevar']))
{
header("Location: http://meineDomäne/upload/index.php");
}
else
{
header("Location: http://meineDomäne/shop/index.php");
}


Code der Datei /Shop/link.php

if (empty($_SESSION['meinevar'])) {
$_SESSION['meinevar'] = 'meinwert';
}

echo
'<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Hallo von&nbsp;<a href="http://meineDomäne/upload/test.php" target="_new">hier</a>&nbsp;kommt man ins Datei upload Center</td>
</tr>
</table>';


Ich öffne im Browser folgende Dateien:

Im Tab 1: /shop/index.php
Im Tab 2: /upload/test.php
Im Tab 3: /upload/view.php
Im Tab 4: /upload/index.php

Schritt 1: Ich habe mich im Shop nicht angemeldet und erhalte folgende anzeigen:

Im Tab 1: die Startseite des Shops
Im Tab 2: die Startseite des Shops
Im Tab 3:
Gast
1
Variable meinevar nicht da
Im Tab 4 die Startseite des Upload-Scripts

Schritt 2: Ich melde mich im Shop an und erhalte folgende Anzeige nach drücken von F5 in jedem Tab:

Im Tab 1: die Startseite des Shops
Im Tab 2: die Startseite des Shops
Im Tab 3:
Kunde
2
Variable meinevar nicht da
Im Tab 4 die Startseite des Upload-Scripts

Schritt 3: Ich öffne die Seite im Shop mit dem Link zum Upload Script und bekomme folgende Anzeige nach
drücken von F5 in jedem Tab:

Im Tab 1: die Startseite des Shops
Im Tab 2: die Startseite des Upload-Scripts
Im Tab 3:
Kunde
2
meinwert
Im Tab 4 die Startseite des Upload-Scripts

Schritt 4: Ich klicke auf den Link im Shop und in einem neuen Tab öffnet sich die Startseite des
Upload-Scripts ansonnsten zeigen die Tabs das gleiche wie in Schritt 3

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Szenario 2:

Code der Datei /upload/index.php


if (!isset($_SESSION['meinevar']))
{
header("Location: http://meineDomäne/shop/index.php");
}
else
{

//Hier steht der eigentliche Code der /upload/index.php
}


Code der Datei /upload/view.php

echo "<br>";
echo $_SESSION['fredel_status']['fredel_status_name'];
echo "<br>";
echo $_SESSION['fredel_status']['fredel_status_id'];
echo "<br>";
echo "<br>";
if (isset($_SESSION['meinevar']))
{
echo $_SESSION['meinevar'];
}
else
{
echo "Variable meinevar nicht da";
}


Code der Datei /upload/test.php

if (isset($_SESSION['meinevar']))
{
header("Location: http://meineDomäne/upload/index.php");
}
else
{
header("Location: http://meineDomäne/shop/index.php");
}


Code der Datei /Shop/link.php

if (empty($_SESSION['meinevar'])) {
$_SESSION['meinevar'] = 'meinwert';
}

echo
'<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Hallo von&nbsp;<a href="http://meineDomäne/upload/index.php" target="_new">hier</a>&nbsp;kommt man ins Datei upload Center</td>
</tr>
</table>';


Ich öffne im Browser folgende Dateien:

Im Tab 1: /shop/index.php
Im Tab 2: /upload/test.php
Im Tab 3: /upload/view.php
Im Tab 4: /upload/index.php

Schritt 1: Ich habe mich im Shop nicht angemeldet und erhalte folgende anzeigen:

Im Tab 1: die Startseite des Shops
Im Tab 2: die Startseite des Shops
Im Tab 3:
Gast
1
Variable meinevar nicht da
Im Tab 4 die Startseite des Shops

Schritt 2: Ich melde mich im Shop an und erhalte folgende Anzeige nach drücken von F5 in jedem Tab:

Im Tab 1: die Startseite des Shops
Im Tab 2: die Startseite des Shops
Im Tab 3:
Kunde
2
Variable meinevar nicht da
Im Tab 4 die Startseite des Shops

Schritt 3: Ich öffne die Seite im Shop mit dem Link zum Upload Script und bekomme folgende Anzeige nach
drücken von F5 in jedem Tab:

Im Tab 1: die Startseite des Shops
Im Tab 2: die Startseite des Upload-Scripts
Im Tab 3:
Kunde
2
meinwert
Im Tab 4 die Startseite des Shops

Schritt 4: Ich klicke auf den Link im Shop und in einem neuen Tab öffnet sich die Startseite des
Shops ansonnsten zeigen die Tabs das gleiche wie in Schritt 3

Was läuft da falsch und wo mache ich einen Fehler?? :confused: :dontknow:

Endschuldigt bitte das ich so viele Fragen habe bin halt noch PHP-Newbie

Danke für eure Antwort

 
Bugbuster
05-03-2008, 19:47 
 
Endschuldigt bitte das ich so viele Fragen habe bin halt noch PHP-Newbie

ich seh nirgends ein fragezeichen. ihr etwa?

mal ehrlich: das ganze sieht für mich eher nach logikproblemen deines skriptes bzw. verständnisproblem deinerseits aus. also verbrech dir den kopf drüber. das programm macht nur das was du ihm sagst.

mfg
bugbuster

 
AnNo1968
05-03-2008, 20:24 
 
@Bugbuster

Anstelle der Fragezeichen hatte ich halt die beiden Smilies. Sorry mein Fehler. Hab den Beitrag editiert und Fragezeichen hinzugefügt.

Bugbuster schrieb:
mal ehrlich: das ganze sieht für mich eher nach logikproblemen deines skriptes bzw. verständnisproblem deinerseits aus. also verbrech dir den kopf drüber. das programm macht nur das was du ihm sagst.

Darüber hab ich mir die letzten Tage den Kopf zerbrochen. Und der raucht immer noch. Ich steck im moment in eine Sackgasse und komm nicht weiter.

Ich dachte man würde mir hier helfen mein Verständnisproblem bzw. das Logikproblem des Scripts zu lösen. Oder mir zumindestens die Richtung weisen. Damit ich weiter komm.

Ich dachte vielleicht würde einem Foren User etwas auffallen was ich übersehen hab.

Habe sogar extra darauf hingewiesen das ich PHP-Newbie bin.

Da hat man halt noch Verständnisprobleme bzw. Logikprobleme.

Nur wenn niemand einen Hinweis oder Lösungsansatz für die Probleme liefert kann ich nicht weiterkommen als Autodidact.

Nur durch Bücher; Manuals; Tutorials Lesen und ausprobieren ohne fachliche Anleitung und/oder Hilfe von Menschen die das Thema meisterlich beherrschen kann ich jedenfalls nicht den Status eines PHP-Newbies ablegen.

Und werde warscheinlich immer die gleichen Fehler machen.

 
Bugbuster
05-03-2008, 21:49 
 
Ja, wir helfen dir schon keine Sorge. Normalerweise wärst du schon richtig zugespammt worden wenn jemand ein Problem verstehen würde. Glaub mir bei manchen Forenmitgliedern frag ich mich ob die noch arbeiten oder das Forum zum Beruf gemacht haben :D ( hartz 4, sudieren etc.)

Also kommen wir zurück zu deinem Problem -> definiere es mal ..

wenn du im tab 1 das öffnest und um tab2 bla ... da kommt doch keiner klar,,, also ich hab nach der hälfe aufgehört zu lesen weil ich den faden verloren haben.


mfg
bugbuster

 
Bladeflo89
06-03-2008, 00:14 
 
is wirklich eine lange Beschreibung aber ich hab mir mal die Mühe gemacht^^

Erster Punkt:
Wenn ich dann in der /upload/index.php Abfrage ob diese Variable existiert muss ich dann auch den Namen
der Session mit angeben. So etwa:

session_name('abc');
session_start();

Du musst die Session da nicht nochmal starten...
http://de.php.net/session_start

Zweiter Punkt:
warum mischt du empty und isset?
empty Prüft ob die Variable leer ist, isset ob sie existiert...
führt hier jetzt warscheinlich nicht zum Fehler aber solle gesagt seien^^

Weiter im Text...

hast du schonmal geschaut ob
echo $_SESSION['meinevar'];
ne Ausgabe erzeugt, d.h etwas in der Variable ist?
sowohl im Shop als auch im Uploadteil...


zu deinen Beschreibungen,
wenn du in mehreren Tabs oder auch Fenstern die Seiten einzeln aufrufst, kann es je nach reihenfolge der Aufrufe sein das die Session im betreffenden Fenster noch nicht gestartet ist,
oder die Variable nicht gesetzt wurde...

bin jetzt nicht wirklich der PHP profi aber hoffe ich konnt ein bissel helfen :)

bin auf jeden Fall auf die Lösung gespannt und hoffe dass falls du es alleine löst, hier mitteilst wie bzw. wo das Problem lag :)

lg Flo

 
AnNo1968
06-03-2008, 12:14 
 
@ Bugbuster

Ich habe folgendes Problem:

Wenn ich über einem Link eine Seite in einem neuen Tab bzw. Fenster aufrufe mit folgendem Inhalt:
(Inhalt der Datei die im neuen Fenster aufgerufen wird)

if (!isset($_SESSION['meinevar']))
{
header("Location: http://meineDomäne/shop/index.php");
}
else
{
header("Location: http://meineDomäne/anno/login.php");
}

//oder die Datei hat diesem Inhalt(nicht beide Alternativen gleichzeitig):

if (isset($_SESSION['meinevar']))
{
header("Location: http://meineDomäne/anno/login.php");
}
else
{
header("Location: http://meineDomäne/shop/index.php");
}

Funktioniert Die if Bedingung genauso wie sie soll. Also je nach Fall ob die Variable "meinevar" vorhanden
ist oder nicht macht er die entsprechende Seite auf.

Wenn die Seite auf die ich im neuen Tab bzw. Fenster verlinke folgenden Inhalt hat:

if (!isset($_SESSION['meinevar']))
{
header("Location: http://meineDomäne/shop/index.php");
}
else
{
echo "Hier steht der Code des Upload-Scripts";
}

//oder die Datei hat diesem Inhalt(nicht beide Alternativen gleichzeitig):

if (isset($_SESSION['meinevar']))
{
echo "Hier steht der Code des Upload-Scripts";
}
else
{
header("Location: http://meineDomäne/shop/index.php");
}


Funktioniert die if Bedingung nicht egal ob die Variable "meinevar" vorhanden ist oder nicht. Es wird
immer die Startseite des Shops angezeigt nie der Text.

@Bladeflo89

Ja ich habe schon mal geschaut ob die Variable Vorhanden ist sowohl im Shop als auch im Uploadteil.
Sonnst würde ja wenn die Datei eine der beiden Alternativen aus dem ersten Code Abschnitt oben enthielt
auch immer die Shopstartseite aufgerufen werden. Und das ist nicht der Fall.

@all

Ich hoffe das meine Problembeschreibung verständlicher und übersichtlicher ist.

Gruß Andreas

 
Bugbuster
06-03-2008, 13:40 
 
dann mach doch ma anstatt der weiterleitung eine echo ausgabe um zu schauen wo du in der if schleife landest. ich finde das if konstrukt deinerseits eh sehr fragwürdig.

 
AnNo1968
10-03-2008, 11:34 
 
Hab einen Teilerfolg erziehlt. Habe einige Config-Dateien des Shops in der /upload/index.php eingebunden.

Die Dateien sind verantwortlich für das Session-Management, die Datenbankanbindung (da der Shop seine Session-Daten in einer DB-Tabelle speichert), und Dateien für die Grund-Konfiguration.

Jetzt funktioniert die if Bedingung auch direkt in der /upload/index.php. Nun habe ich aber ein anderes Problem.

Da wohl einige Variablen und andere Einstellungen im Shop und upload-script gleich benannt sind. Funktioniert das upload-script nicht mehr so wie es soll.

Gibt es einen Weg das Problem zu lösen ohne die Variablen und sonstige Einstellungen alle umzubennen?

Wie zu Beispiel das ich nach einem include oder require bzw. Include_once oder require_once. Die darüber eingebundenen Dateien und alle darin enthaltenen Einstellungen an einem bestimmten Punkt auf einen schlag wieder loswerde.

Ein exclude oder sowas in der art?

@Bugbuster

Was genau findest du an meinem if konstruckt fragwürdig?

Ist es in dieser Variante besser oder immer noch fragwürdig?


if (isset($_SESSION['meinevar'])){
echo "Hier steht der Code des Upload-Scripts";
}else{
header("Location: http://meineDomäne/shop/index.php");
}


Für mich war halt die andere Variante übersichtlicher.

Danke für die Hilfe

 
AnNo1968
12-03-2008, 11:09 
 
Es lebt...

Endlich jetzt Funktioniert es genau so wie ich es mir vor gestellt habe.

Nach einbinden der Config-Dateien aus dem Shop in der /upload/index.php

Noch einige Variablen Namen im upload-script angepasst.

Das if konstrukt in der /upload/index.php:


require_once ('../incl/shopconfig.php');
if (!isset($_SESSION['meinevar']))
{
header("Location: http://meineDomäne/shop/index.php");
}
else
{
// Hier steht der Code der /upload/index.php
}


Ich danke allen die mir geholfen haben. Ohne diese Hilfe hätte ich es nie geschaft.

DANKE für die Hinweise, die Denkanstöße, eure Mühe, DANKE

Andreas

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:21 Uhr.