escape
Goto Top

Userspezifischer Link setzen

Hallo erstmal
Komme gleich zum Kern des Problems:

Ich habe ein PHP-Script für ein Login mit Benutzer- und Passwortabfrage das mit Cookies arbeitet. Geht auch alles einwandfrei.
Die Page ist so gemacht, dass nach dem Login jeder user eine eigene individuelle Startseite erhält (das Loginscript leitet den User auf die entsprechende Seite weiter). Alle anderen Seiten, die dann von dort aus verlinkt sind, sind für alle user gleich.

Nun mein Problem:
Wie kann ich einen "Home"-Button setzen, so dass jeder User jeweils wieder auf seine EIGENE,individuelle Startseite zurückkehren kann?

Für eure Hilfe bin ich jetzt schon sehr dankbar.

es grüsst
escape

ps: eventuell hilft das Login-Script weiter.

var successpage = "leer.php"; // The page users go to after login, if they have no personal page.  
var loginpage = "/index.php"; //Change this to the page the login panel is on.  

var users = new Array();
// Usernames, Passwords & User Pages
users = new Array("user1","passw1","seite1.php");  
users[1] = new Array("user2","passw2","seite2.php");  
users[2] = new Array("user3","passw2","seite3.php");  

// Login Functions
function login(username,password){
var member = null;
var loggedin = 0;
var members = users.length;
for(x=0;x<members && !loggedin; x++){
if((username==users[x])&&(password==users[x][1])){
loggedin = 1;
member = x;
break; // User validated, terminate the for loop.
}
} 

if(loggedin==1){
if(users[member][2] != "") {  
successpage = users[member][2];
}
setCookie("login",1);  
if (top.location.href != location.href){
location.href = successpage; 
}else{
top.location.href = successpage; 
}
}else{
alert('Zugang verweigert, Username oder Passwort falsch!');  
} 
}

function logout() {
deleteCookie("login");  
if (top.location.href != location.href){
location.href = loginpage; 
}else{
top.location.href = loginpage; 
}
}

// Cookie Handler

var ckTemp = document.cookie;

function setCookie(name, value) { 
if (value != null && value != "")  
document.cookie=name + "=" + escape(value) + ";";  
ckTemp = document.cookie;
}

function deleteCookie(name) {
if (getCookie(name)) {
document.cookie = name + "=" +  
"; expires=Thu, 01-Jan-70 00:00:01 GMT";  
}
}

function getCookie(name) { 
var index = ckTemp.indexOf(name + "=");  
if(index == -1) return null;
index = ckTemp.indexOf("=", index) + 1;  
var endstr = ckTemp.indexOf(";", index);  
if (endstr == -1) endstr = ckTemp.length;
return unescape(ckTemp.substring(index, endstr));
}

function checkCookie() {
var temp = getCookie("login");  
if(!temp==1) {
alert('Zugriff verweigert, bitte logen Sie sich ein!');   
if(top.location.href != location.href){
location.href = loginpage; 
}else{
top.location.href = loginpage; 
}
}
}

//Login Panel

function BuildPanel() {
document.write('<form name="logon"><table align="center" border="0"><tr><td align="right">');  
document.write('<small><font face="Verdana">Username:</font></small></td>');  
document.write('<td><small><font face="Verdana"><input type="text" name="username" size="20"></font></small></td></tr>');  
document.write('<tr><td align="center"><small><font face="Verdana">Passwort:</font></small></td>');  
document.write('<td><small><font face="Verdana"><input type="password" name="password" size="20"></font></small></td></tr>');  
if(imgSubmit == ""){  
document.write('<tr><td align="right" colspan="2"><p><input type="button" value="Logon" name="Logon" onclick="login(username.value,password.value)">');   
} else {
document.write('<tr><td align="center" colspan="2"><p><input type="image" src="'+imgSubmit+'" name="Logon" onclick="login(username.value,password.value)">');  
}
if(imgReset == ""){  
document.write('<input type="reset" value="Reset" name="Reset">');  
} else {
document.write('<input type="image" src="'+imgReset+'" name="Reset" onclick="logon.reset();">');  
}
document.write('</p></td></tr></table></form>');  
}


so das wars, hoffend auf Hilfe!

Content-ID: 31239

Url: https://administrator.de/contentid/31239

Ausgedruckt am: 25.11.2024 um 11:11 Uhr

pi314
pi314 27.04.2006 um 15:14:17 Uhr
Goto Top
Hi,

wie wäre es mit einer Session, die du bei der Anmeldung startest und dann in einer Session-Variable den Usernamen ablegst.

Dann kannst du bei jeder Seite prüfen (per include oder so), ob eine Session existiert und dann je nach Username einen eigenen Link setzen...

so long,
pi
escape
escape 27.04.2006 um 18:58:04 Uhr
Goto Top
hi
Danke für die Antwort, dachte ich mir fasst, dass es mit einer Session gehen muss (mit viel googeln rausgefunden). Nur leider habe ich keinen Plan wie und wo ich es machen kann.
Bin leider ein totaler Anfänger.
Könntest du mir eventuell helfen?
lobotomie
lobotomie 28.04.2006 um 13:11:35 Uhr
Goto Top
Alternativ hast Du auch die Möglichkeit die Variablen anstatt in der Session, im Cookie zu speichern.

Kleines Beispiel

<snipp>

setCookie("login",1);
//setze Userhomepahe in Cookie
setCookie("homepage", successpage);

if (top.location.href != location.href){
location.href = successpage;
}else{
top.location.href = successpage;
}

</snipp>

Den Wert kannst Du dann wieder aus dem Cookie holen, wenn Du ihn brauchst.

Hoffe es ist verständlich face-smile

Lobo
pi314
pi314 28.04.2006 um 16:24:10 Uhr
Goto Top
Hi,

natürlich... face-smile

Also, eine gute Beschreibung einer Session findest du hier:
http://www.tutorials.de/forum/php/2046-suche-tuts-zu-php-und-session.ht ...

Nun, ein kleines Code-Besipiel:
<?php
   //Bei deinem ersten Aufruf startest du eine Session und speicherst den Namen ab
   session_start();  //Die Session wird gestartet
   $_SESSION[ 'username' ] = 'dummyUser';  //Namen setzen  
 ?>

Um den Namen auf einer anderen Seite abzufragen:
session_start();
if( $_SESSION[ 'username' ] == 'dummyUser' ) {  
   //hier Code für den Userspezifischen-Link..
}

Ich hoffe, ich konnte dir ein bisschen weiterhelfen...
Wenn weitere Fragen sind, einfach posten.

pi
escape
escape 28.04.2006 um 16:51:26 Uhr
Goto Top
Um den Namen auf einer anderen Seite
abzufragen:
session_start();
> if( $_SESSION[ 'username' ] == 'dummyUser' )  
> {
>    //hier Code für den
> Userspezifischen-Link..
> }
> 

Danke dir vielmals für deine Antwort, konnte es nachvollziehen.

Jedoch habe ich noch eine Frage, was muss ich noch zusätzlich eintragen, denn ich habe ja etwa 4 User, die sobald sie ihre Startsiete verlassen alle auf die selben Seiten weitersurfen und eben ich brauche ja dann ein "home" button.
Deine Abfrage bezieht sich ja immer nur auf den einen User.. Ich muss aber den Code in allen unterseiten eintragen und dort muss ja immer überprüft werden wer gerade ohnlie ist.

Wie sieht dann noch bitte der Eintrag für
//hier Code für den
Userspezifischen-Link..
aus.

Ich hoffe ich nerve nicht, aber ich denke es sind sicherlich die letzten Fragen.
Danke sehr
escape
escape 28.04.2006 um 16:53:45 Uhr
Goto Top
Den Wert kannst Du dann wieder aus dem
Cookie holen, wenn Du ihn brauchst.

Als erstes möchte ich mich auch bei dir für deine Antwort bedanken.

Kannst du mit bitte erklären wie der Code lautet damit ich den Cookie wieder auslesen kann. Bzw. Wie sehen dann der Link für den "home-Button" aus.

Merci vielmols
escape
escape 28.04.2006 um 19:18:11 Uhr
Goto Top
so ich habe dies gemacht:
nachdem ich den obigen Link zur Session erklärung gelesen habe

auf der userindividuellen Seite das eingebaut:

   //Bei deinem ersten Aufruf startest du eine Session und speicherst den Namen ab
   session_start();  //Die Session wird gestartet
   $_SESSION[ 'username' ] = 'User1';  //Namen setzen  
   session_register("username"); //Ist das richtig so um zu speichern?  

auf den allgemeinen Seite für den Home Link dies (erstamls für 2User)

session_start();
if(!session_is_registered('username') == "User1")   
{
echo "<a href='../userseite1.php'>Startseite</a>"; //hier Code für den Userspezifischen-Link..  
}
else
    {
echo "<a href='../userseite2.php'>Startseite</a>"; //hier Code für den Userspezifischen-Link..     
 }

geht aber immer noch nicht, denn es erhalten beide immer den gleichen Link zur Home.

Was ist hier echt noch falsch
pi314
pi314 29.04.2006 um 15:56:59 Uhr
Goto Top
hi,

hab einen Beitrag zum Thema Cookie geschrieben. Sollte eigentlich ein Tuorial werden, ist es aus irgendwelchen Gründen aber nicht face-wink, deswegen hier kein Link.

Schau doch mal unter Entwicklung>PHP nach...

so long,
pi
escape
escape 29.04.2006 um 16:09:45 Uhr
Goto Top
hallo @pi314

das mit dem Cookie ist denke ich eh gestorben... mit gefällt die erste Varieante von dir viel besser.
Aber wie ich in meinem letzten Beitrag geschrieben habe, komme ich nicht weiter, habe mir den Link den du gepostet hast durchgelesen und eben zum obigen ergebis gekommen, aber es ist immer noch ein Fehler drin..

Kannst du mit bitte helfen. Danke


<<so ich habe dies gemacht:
<<nachdem ich den obigen Link zur Session erklärung gelesen habe

<<auf der userindividuellen Seite das eingebaut:


   //Bei deinem ersten Aufruf startest du eine Session und speicherst den Namen ab
   session_start();  //Die Session wird gestartet
   $_SESSION[ 'username' ] = 'User1';  //Namen setzen  
   session_register("username"); //Ist das richtig so um zu speichern?  

<<auf den allgemeinen Seite für den Home Link dies (erstamls für 2User)


session_start();
if(!session_is_registered('username') == "User1")   
{
echo "<a href='../userseite1.php'>Startseite</a>"; //hier Code für den Userspezifischen-Link..  
}
else
    {
echo "<a href='../userseite2.php'>Startseite</a>"; //hier Code für den Userspezifischen-Link..     
 }

<<geht aber immer noch nicht, denn es erhalten beide immer den gleichen Link zur Home.

<<Was ist hier echt noch falsch
lobotomie
lobotomie 02.05.2006 um 15:07:28 Uhr
Goto Top
Den Code für das Auslesen des Cookie hast Du bereits; daher bin ich nicht näher drauf eingegangen....

--> function getCookie(name)

Diese liefert Dir den Inhalt des Cookie zurück und da der Cookie clientseitig gespeichert wird, hast Du auch keine Probleme mit der abgrenzung der einzelnen User.

Allerdings muss ich pi Recht geben, die Variante mit den Sessions ist die schönere und sicher auch in grösseren Applikationen die leistungsfähigere.


Lobo
pi314
pi314 02.05.2006 um 18:45:20 Uhr
Goto Top
Hi,

du brauchst das session_register nicht.

Schau dir mal folgenden Code an:

index.php
<?php
	session_start();
	$_SESSION[ 'username' ] = 'dummy';  
	echo( '<a href="test.php">weiter...</a>' );  
 ?>
test.php
<?php
	session_start();
	echo( 'Username mit Session ausgelesen: '.$_SESSION['username'] );  
 ?>
Du musst einfach einen Wert in eine Variable speichern (mit $_SESSION[ 'Variablenname' ] = 'irgendein Wert von der Variable')
Dann kannst du ihn auch einfach so wieder auslesen.
Ist die Variable nicht gesetzt, steht auch nichts drin.

greetz,
pi
escape
escape 03.05.2006 um 22:07:38 Uhr
Goto Top
Salü
Ich bedanke mich bei allen für die Hilfe. Alles geht wie ich es wollte..
Daher zeige ich hier mal schnell wie ich es gelöst habe:

Auf der Seite die Jeder User für sich alleine hat, wird eine Session gestartet

session_start(); 
$_SESSION['User1'] = 'User1';  


Dann wird in allen anderen Seiten dies eingegeben:

session_start();
if($_SESSION['User1']) echo '<a href="seite1.php?' . SID . '"></a>';  
elseif ($_SESSION['User2']) echo '<a href="seite2.php?' . SID . '"></a>';  
elseif ($_SESSION['User3']) echo '<a href="seite3.php?' . SID . '"></a>';  

natürlich soviel wie man User hat, der Name User1 usw. kann geändert werden face-smile

Die Links sehen dann bei mir so aus, damit wird immer die Session übergeben:

echo '<a href="eineseite.php?' . SID . '"></a>';   
pi314
pi314 04.05.2006 um 11:42:58 Uhr
Goto Top
Freut mich, dass es geht!

Noch ein kleiner Tip:
Es klingt so, als hättest du in jede der Seiten deinen if...elseif...elseif...-Code reinkopiert.

Einfacher und besser zu warten (falls mal ein User hinzukommt, müsstest du ja sämtliche Seiten ändern) ist es, deine session_start...if...elseif...elsif...-Code in eine Datei zu schreiben (z.B. userCheck.php) und diese dann in jede der Seiten, die es benötigt, per include einzufügen.
Somit musst du nur diese eine Datei ändern, falls sich mal was tut face-wink

Beispiel:
//userCheck.php
session_start();
if($_SESSION['User1']) echo '<a href="seite1.php?' . SID . '"></a>';  
elseif ($_SESSION['User2']) echo '<a href="seite2.php?' . SID . '"></a>';  
elseif ($_SESSION['User3']) echo '<a href="seite3.php?' . SID . '"></a>';  
//andere Seite
include( "standards/userCheck.php" ) //je nach Pfadstrukutr halt...  
...weiterer Code
escape
escape 04.05.2006 um 12:05:07 Uhr
Goto Top
face-smile

Danke für den Tipp, manchmal sieht man vor lauter Bäumen den Wald nicht... ich kenne diesen Include Befehl, wäre aber nie auf die Idee gekommen in so zu verwenden...
Echt geil, merci nochmals!

Gruss
escape