php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 29-02-2008, 03:23
margoux
 Newbie
Links : Onlinestatus : margoux ist offline
Registriert seit: Feb 2008
Ort: Hamburg
Beiträge: 5
margoux ist zur Zeit noch ein unbeschriebenes Blatt
Standard user auf verschiedene seiten lenken nach login?

Hallo und guten Morgen,

bin ziemlich neu dabei mit php und mysql und brauche einen Denkanstoß.
Ich habe das super Tutorial Login System von Andreas Zimane
eingebaut und es läuft alles wunderbar.
Als nächstes habe ich 3 neue Seiten erstellt und
in diese die session_start funktion sowie eine umleitung
auf die login seite eingefügt per header location.
Klappt alles, wenn man nicht eingeloggt ist, kann
man die neu angelegten Seiten auch nicht
aufrufen, so soll es ja auch sein.

ab hier komme ich nicht mehr weiter,
folgendes möchte ich erreichen:

das login system soll verschiedene user direkt
nach dem einloggen auch auf unterschiedliche Seiten lenken.

Also user a soll nach dem einloggen auf seite a,
user b auf seite b umgeleitet werden, usw.

user a soll die seiten von user b auch nicht sehen dürfen.

Zur Zeit kann ich zwar beliebig viele User anlegen
und mich mit denen auch einloggen, nur lande ich eben
immer auf der gleichen Startseite, jetzt weiß ich nicht mehr weiter...

ist das realisierbar über eine weitere zeile in der mysql tabelle,
also eine direkte Weiterleitung jeweils abhängig von dem usernamen?

würde mich sehr über einen ansatz oder auch suchbegriff freuen,
ich finde dazu den Einstieg nicht, da mir auch nicht klar ist
wonach ich jetzt eigentlich suchen müßte.

so sieht zur Zeit die Login-Seite aus, die mysql hat die 3 Zeilen id, user, password.

Grüße Margoux



PHP-Code:
<?php
session_start
();
require(
"live_werbemittel/connect.inc.php");
?>

<div id="col3">
<?php if(!isset($_POST['submit'])) { ?>
<form action="<?php $PHP_SELF ?>" method="post">
<table width="400" bgcolor="#000000" border="0"
 cellpadding="5" cellspacing="1" align="center">
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<b>Bitte erst anmelden</b>
</td>
</tr>
<tr>
<td width="170" bgcolor="#e7e7e7">Benutzername</td>
<td width="230" bgcolor="#ffffff"><input type="text"
 name="username" size="20" class="input"<?php
 
if($_POST['username'] != "" )
 {echo 
' value="'.$_POST['username'].'"';} ?>></td>
</tr>
<tr>
<td width="170" bgcolor="#e7e7e7">Passwort</td>
<td width="230" bgcolor="#ffffff">
<input type="password" name="password" size="20"
 class="input"></td>
</tr>
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<input type="submit" name="submit"
 value="Anmelden" class="button">
</td>
</tr>
</table>
</form>
<?php
 
}elseif(!$_POST['username'] || $_POST['username'] == "") {
   echo 
'<p align="center">Einen Benutzernamen brauchen
 wir schon ;-)<br><br><a href="/003_kontakt.php">Zurück</a></p>'
;
 }elseif(!
$_POST['password'] || $_POST['password'] == "") {
   echo 
'<form action="/003_kontakt.php" method="post">';
   echo 
'<p align="center">Ein Passwort brauchen wir schon ;-)<br>
<br>'
;
   echo 
'<input type="hidden" name="username" value="'.$_POST['username'].'">';
   echo 
'<input type="submit" name="zurueck" value="Zurück">';
   echo 
'</p>';
   echo 
'</form>';
 }else{
   
$password md5($password);
   
$query = @mysql_query("SELECT user, pass FROM
 users WHERE user = '"
.$_POST['username']."'") or die('Select ist fehlgeschlagen!');
   
$result = @mysql_fetch_array($query)
 or die(
'<p align="center">Sorry, aber dieser
 Benutzername existiert nicht!<br><a href="/003_kontakt.php">Zurück</a></p>'
);
   if(
$password != $result['pass']){
     echo 
'<form action="/003_kontakt.php" method="post">';
     echo 
'<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
     echo 
'<input type="hidden" name="username" value="'.$_POST['username'].'">';
     echo 
'<input type="submit" name="zurueck" value="Zurück"></p>';
     echo 
'</form>';
     die;
   }else{
     
$user $result['user'];
     
session_register('user');
     echo 
'<p align="center">LogIn erfolgreich! :-)<br>
<br><a href="live_werbemittel/sichere_seite.php">Weiter</a></p>'
;
   }
  }
?>
Mit Zitat antworten
  #2 (permalink)  
Alt 29-02-2008, 08:56
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Du musst die User-Datenbanktabelle um eine Spalte erweitern, in der die URL für jeden User gespeichert wird.
Nach erfolgreichem Login leitest du dann nicht stur auf live_werbemittel/sichere_seite.php weiter, sondern eben auf die URL aus der DB.
Mit Zitat antworten
  #3 (permalink)  
Alt 29-02-2008, 09:36
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: user auf verschiedene seiten lenken nach login?

Zitat:
Original geschrieben von margoux
user a soll die seiten von user b auch nicht sehen dürfen.
Das kannst du wahrscheinlich nicht über die Login-Seite prüfen, sondern in jeder einzelnen Seite selber. Da überprüfst du halt nicht nur, ob der Benutzer eingeloggt ist, sonden nachher auch noch, ob der Benutzer für die Seite berechtigt ist. Diese Prüfung würde ich dann allerdings in eine externe Funktion auslagern.

PS
session_register() ist eigentlich nicht mehr ganz aktuell, verwende besser $_SESSION
__________________
Gruss
H2O
Mit Zitat antworten
  #4 (permalink)  
Alt 02-03-2008, 00:27
margoux
 Newbie
Links : Onlinestatus : margoux ist offline
Registriert seit: Feb 2008
Ort: Hamburg
Beiträge: 5
margoux ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo ihr 2,

erstmal besten Dank für die Tipps, wobei ich die userweiterleitung
jetzt erstmal anders gelöst habe und zu meinem Erstaunen
funktioniert das auch tatsächlich, ist aber sicher nicht optimal gelöst.

Stand der Dinge:
die Einstiegsseite mit dem Kundenlogin ist die 003_kontakt.php

nachdem ein User sich eingeloggt hat öffnet
sich nochmals die 003_kontakt.php mit der Bestätigung
"Sie sind eingeloggt".

darunter befindet sich ein weiter Link
"zur Werbemittelvorschau",
dieser Link führt auf sichere_seite.php.

Nun habe ich in sichere_seite die auth.php eingefügt,
Codes folgen gleich,

und in die auth.php trage ich dann jeweils pro User
nachfolgenden Code ein, Umleitung dann per header location....

Klappt soweit hervorragend, user a kommt automatisch auf Seite a

und User b auf Seite b, immer abhängig vom Login-Namen.

das heißt bei korrektem Login wird die Anzeige von sichere_seite.php
übersprungen mit der Umleitung header Location.

Wenn sich ein User einloggt dem noch kein Vorschaubereich
zur Verfügung steht, zeigt sichere_seite.php die Info an
" Ihr Vorschaubereich ist noch nicht eingerichtet.
Das soll auch so sein.

Soweit so gut, bin ja schon ganz stolz, nur leider meilenweit
von der Idee entfernt, die Ziel-Url aus der Datenbank zu ziehen,
abhängig vom Usernamen, aus der Tabelle mit dem Feld "user".

Meine Fragen:

kann ich das so belassen mit den Einträgen in der auth.php
oder wird das ganze bei sagen wir mal 30 Usern immer
langsamer von der Abfrage her?

habt ihr vielleicht eine Beispielseite oder Tutorial
(ich suche seit 3 Nächten),
wo ich mir die Userumleitung per mysql ansehen könnte?
Ich habe zwar eine weitere Spalte angelegt mit namen "zielurl"
nur leider überhaupt keine Ahnung was ich da nun reinschreiben soll
und welche Abfrage ich dazu in der auth.php starten müßte?


hier jetzt mal die sichere_seite.php und die auth.php

sichere_seite.php

PHP-Code:
<?php
 session_start
();
 if(!
session_is_registered('user') || $_SESSION['user'] == "")
 {
  
header("Location: http://www.domain.de/003_kontakt.php]");
   die;
 }
 
 require(
"auth.php");
 
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>Sichere Seite</title>
 </html>


auth.php

PHP-Code:
<?php
    
if(!session_is_registered('user') || $_SESSION['user'] == "peter"){
header("Location: http://www.domain.de/
live_werbemittel/kunde_abc/abc_01.php"
);
exit;
}
    
if(!
session_is_registered('user') || $_SESSION['user'] == "kalli"){
header("Location: http://www.domain.de/
live_werbemittel/kunde_xyz/xyz_01.php"
);
exit;
}
?>

der Eintrag in den Landingpages.... abc_01.php sieht immer wie folgt aus:

PHP-Code:
<?php
session_start
();
if(!
session_is_registered('user') || $_SESSION['user'] == "") {
header("Location: http://www.domain.de/003_kontakt.php");
die;
  }
  require(
"../connect.inc.php");
  
?>
Würde mich sehr über weiteren Input freuen...

an der Änderung:

Zitat:
session_register() ist eigentlich nicht mehr ganz aktuell, verwende besser $_SESSION
arbeite ich noch, beim Versuch dies zu ändern gab es eine Fehlermeldung,
da ich die vergessen habe, teste ich das erstmal weiter,
hab sicher irgendwelche Zeichen davor vergessen.

grüße Margoux
Mit Zitat antworten
  #5 (permalink)  
Alt 02-03-2008, 01:45
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von margoux
Soweit so gut, bin ja schon ganz stolz, nur leider meilenweit
von der Idee entfernt, die Ziel-Url aus der Datenbank zu ziehen,
abhängig vom Usernamen, aus der Tabelle mit dem Feld "user".
ja und warum? was ist so schwer, während des logins eine dritte spalte abzufragen?
SELECT user, pass, site FROM users WHERE ...

wenn login ok, dann die seite in die session schreiben:
$_SESSION['site'] = $result['site'];

so, das tat auch garnicht weh, oder?

Zitat:
Original geschrieben von margoux
kann ich das so belassen mit den Einträgen in der auth.php
oder wird das ganze bei sagen wir mal 30 Usern immer
langsamer von der Abfrage her?
wenn dich das nicht stört und du es auch nicht redundant findest kannst du es von mir aus so lassen

du könntest jetzt allerdings auch einfach die weiterleitung zu 'http://www.example.org/'.$_SESSION['site'] benutzen.
übrigens ist die abfrage
Zitat:
if(!session_is_registered('user') || $_SESSION['user'] == "peter")
auch ziemlicher quatsch. denn das heißt soviel wie, wenn 'user' nicht in der session oder user 'peter' in der session, dann weiterleitung.
dass session_is_registered() veraltet ist, wurde dir schon gesagt - benutze isset($_SESSION['user'])

auf der entsprechenden kundenseite müsstest du jetzt noch überprüfen, ob $_SESSION['site'] zu der aktuell aufgerufenen seite passt. dabei ist sicherlich $_SERVER['PHP_SELF'] hilfreich.
Mit Zitat antworten
  #6 (permalink)  
Alt 02-03-2008, 23:04
margoux
 Newbie
Links : Onlinestatus : margoux ist offline
Registriert seit: Feb 2008
Ort: Hamburg
Beiträge: 5
margoux ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo 3DMax,
Zitat:
if (! isset($_SESSION['user']) || $_SESSION['user'] == "")
habe ich jetzt auf den betreffenden Seiten erfolgreich geändert,
da war vorher eine Klammer zuviel.

Allerdings steht auf der 003_kontakt.php (die Login-Seite) der Eintrag

session_register...
PHP-Code:
else{
     
$user $result['user'];
     
session_register('user');
     echo 
'<p align="center">LogIn erfolgreich! :-)<br>
<br><a href="live_werbemittel/sichere_seite.php">Weiter</a></p>'
;
   } 
diesen habe ich auch erst geändert, kamen aber Fehlermeldungen,
ich gehe mal davon aus, das der Eintrag auch so dort hingehört?

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

Das der Eintrag "peter" in der auth.php nachstehend Quatsch ist,
habe ich mir mittlerweile auch zusammengelesen.

Aber auch auf die Gefahr hin, das Du einen Schreikrampf bekommst,
woher soll der Server denn wissen, wen er wohin leiten soll?
Also ich habe in der auth.php den Eintrag "peter" rausgenommen, das sieht dann so aus:
PHP-Code:
if (! isset($_SESSION['user']) || $_SESSION['user'] == ""){ 
statt vorher:
PHP-Code:
if (! isset($_SESSION['user']) || $_SESSION['user'] == "peter"){ 
dann passiert aber folgendes:

einloggen erfolgt richtig, danach wird sichere_seite.php angezeigt
mit meinem Text, "Ihre Vorschau ist noch nicht eingerichtet", das wars.

Setze ich "peter" wieder ein, wird er sofort nach erfolgreichem einloggen
auf seinen Bereich geleitet, ebenso klappt das auch mit weiteren
Usern, jeder landet auf seiner Seite und kann die anderen Seiten,
die nicht zu seinem Bereich gehören auch nicht über die Browserzeile
aufrufen, dann erfolgt die Umleitung auf die Login-Seite.

Von der Logik ist mir zwar klar was Du meinst, nur sagen wir mal,
es erfolgt ja die richtige Reaktion auf die Eingabe "peter". Was nun?
kann es damit zu tun haben, das die auth.php in sichere_seite.php eingebunden wird?
die auth.php ist ja nicht in der ersten Seite, also der Login-Seite
003_kontakt.php eingebunden?

An der eigentlichen Abfrage (site über Datenbank abfragen und user
in seinen Bereich weiterleiten) tüftel ich noch,

ich les da erstmal ein paar Sachen zu, bevor ich jetzt irgendwo
was rauskopiere und melde mich in einigen Tagen nochmal dazu.

Grüße Margoux
Mit Zitat antworten
  #7 (permalink)  
Alt 03-03-2008, 00:23
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von margoux
diesen habe ich auch erst geändert, kamen aber Fehlermeldungen,
ich gehe mal davon aus, das der Eintrag auch so dort hingehört?
richtig müsste es so aussehen:
PHP-Code:
$_SESSION['user'] = $result['user']; 
Zitat:
Original geschrieben von margoux
Aber auch auf die Gefahr hin, das Du einen Schreikrampf bekommst,
woher soll der Server denn wissen, wen er wohin leiten soll?
ich bin jetzt eher sprachlos.
wolltest du nicht die persönliche kundenseite aus der datenbank auslesen


ansonsten sind mir deine weiteren ausführungen zu konfus. ehrlichgesagt habe ich den eindruck, du weißt garnicht so richtig was du da tust.
naja, ich wünsche dir noch viel erfolg beim tüfteln.
Mit Zitat antworten
  #8 (permalink)  
Alt 03-03-2008, 02:08
margoux
 Newbie
Links : Onlinestatus : margoux ist offline
Registriert seit: Feb 2008
Ort: Hamburg
Beiträge: 5
margoux ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vielen dank, hab ich geändert, das funktioniert schon mal:
PHP-Code:
$_SESSION['user'] = $result['user']; 
so konfus ist das gar nicht, so wie das loginsystem zur Zeit läuft,
funktioniert es ja korrekt.
Worauf ich aber rausmöchte ist:
ich habe in der datenbanktabelle "users" eine weitere Spalte angelegt
mit dem Namen "site" und dort die komplette Ziel-URL http://www.......de
reingeschrieben.
Erstens weiß ich nicht ob man das überhaupt so machen kann
und zweitens habe ich keine Ahnung wie ich die Abfrage
PHP-Code:
$abfrage "SELECT user, pass, site FROM users WHERE 
mit der
PHP-Code:
$_SESSION['site'] = $result['site']; 
zusammenbringe.
Mir ist auch nicht klar was hinter WHERE stehen muß um die URL aus der
Datenbank abzufragen? bzw. welche Anweisung leitet denn die
Weiterleitung dann ein? sorry, aber ich bin erst ein paar Tage dabei.
Jedenfalls möchte ich diese komplette Abfrage dann in die sichere_seite.php per
PHP-Code:
require("auth.php"); 
einbinden und
dadurch soll die Weiterleitung auf die geschützten Bereiche stattfinden.
Das geht doch jetzt auch, nur eben nicht über die Datenbank.
Ich bin wirklich für jeden Anfängertipp dankbar.
Grüße Margoux
Mit Zitat antworten
  #9 (permalink)  
Alt 03-03-2008, 03:47
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von margoux
so konfus ist das gar nicht, so wie das loginsystem zur Zeit läuft,
funktioniert es ja korrekt.
sagen wir so, es funktioniert zufällig so wie gewünscht. aber bevor du weitermachst, solltest du dir ersteinmal einige grundlagen aneignen.

PHP-Code:
if(!isset($_SESSION['user']) || $_SESSION['user'] == "peter")
 {
  
header("Location:http://www.domain.de/live_werbemittel/kunde_abc/abc_01.php");
  exit;
 } 
PHP-Code:
if(isset($_SESSION['user']) && $_SESSION['user'] == "peter")
 {
  
header("Location:http://www.domain.de/live_werbemittel/kunde_abc/abc_01.php");
  exit;
 } 
was bedeutet "!", "||" und "&&" ?
wann ist jeweils der wahrheitswert des gesamten ausdrucks wahr? welche bedingungen müssen dabei erfüllt sein und wieviele?
Mit Zitat antworten
  #10 (permalink)  
Alt 04-03-2008, 02:36
margoux
 Newbie
Links : Onlinestatus : margoux ist offline
Registriert seit: Feb 2008
Ort: Hamburg
Beiträge: 5
margoux ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
was bedeutet "!", "||" und "&&" ?
ja, danke für den Hinweis, ich lese mich jetzt erstmal durch das
php manual durch und probiere einiges aus.
Mit "mal eben kurz was ändern" geht es anscheinend wirklich nicht,
sehe ich ja ein.
Danke nochmal für Deine Zeit, arbeiten kann ich ja so schon mal mit
dem Login und wenn ich was brauchbares zustande gebracht habe,
setze ich eine kurze Info in diesen Thread.

grüße margoux
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:45 Uhr.