Seite 1 von 1

das leidige thema: frontend-login! :-)

Verfasst: Di 3. Mai 2005, 16:11
von chrisk17
moin moin,
hab da ein problem mit meinem frontend login!

und zwar funktioniert das eigentlich einwandfrei, bis auf die tatsache das ich es nicht hinbekomme (und auch nix passendes im forum gefunden habe) das wenn man sich z.b. als "user" einloggt man automatisch auf die seite mit der id "73" kommt und wenn man sich als "user123" einloggt man automatisch auf die seite mit der id "33" umgeleitet wird!

Code: Alles auswählen

<span class="textklein">
<b>LogIn</b></span><p>

<?php

if ($auth->auth["uid"] == 'nobody')

{
?>
<form method="post" action="front_content.php?idcatart=<?php echo $idcatart; ?>">
<span class="textklein">Benutzername:</span><br>
<input size="22" type="input" name="username" value=""><br>
<span class="textklein">Passwort:</span><br>
<input size="22" type="password" name="password" value=""><br>

<input type="submit" name="login" value="Anmelden">
</form><br>
<?php
} else {
?>
<span class="textklein"><b>Angemeldet als:</b> <br> <?php echo $auth->auth["uname"]; ?>
<br><br>
<form method="post" action="front_content.php?idcatart=<?php echo $idcatart; ?>">
<input type="submit" name="logout" value="Abmelden">
</form><br></span>
<?php
}
?>
ich hab schon gedacht die user id abfrage zu erweitern um so über die user id eine andere idcatart zubekommen!

z.b.

Code: Alles auswählen

 if ($auth->auth["75"])
echo "<form method='post' action='front_content.php?idcatart=74'>";
und so weiter!

aber datt funktioniert ja man überhaupt nicht!
ich schätze mal es liegt daran das ich im moment mit php auf kriegfuß stehe! :roll:

Verfasst: Di 3. Mai 2005, 16:31
von HerrB
Knapp daneben. Guck doch mal, was bei

echo $auth->auth["uid"];

herauskommt. Entsprechend müsste die Abfrage

if ($auth->auth["uid"] = ' ??? ')

zum Ziel führen.

ÜBRIGENS BEDEUTET GROSSSCHREIBEN SCHREIEN - WENN DU ALSO NICHT GLAUBST, DAS WIR TAUB SIND - ändere doch mal Deinen Betreff des ersten Postings... :wink:

Gruß
HerrB

Verfasst: Di 3. Mai 2005, 16:33
von emergence
Welche Contenido-Version verwendest du?
Wo kann man sich das ansehen (URL)?

demo user daten ?

Verfasst: Di 3. Mai 2005, 16:47
von chrisk17
hab ganz artig den titel jetzt in kleinen buchstaben!!! :oops:

also würde das bedeuten das mein code dann so aussehen würde:

Code: Alles auswählen

<span class="textklein">
<b>LogIn</b></span><p>

<?php

if ($auth->auth["uid"] == 'XYZ')
echo "<form method='post' action='front_content.php?idcatart=000'>";
if ($auth->auth["uid"] == 'XYZ123')
echo "<form method='post' action='front_content.php?idcatart=001'>";
{
?>
<span class="textklein">Benutzername:</span><br>
<input size="22" type="input" name="username" value=""><br>
<span class="textklein">Passwort:</span><br>
<input size="22" type="password" name="password" value=""><br>

<input type="submit" name="login" value="Anmelden">
</form><br>
<?php
} else {
?>
<span class="textklein"><b>Angemeldet als:</b> <br> <?php echo $auth->auth["uname"]; ?>
<br><br>
<form method="post" action="front_content.php?idcatart=<?php echo $idcatart; ?>">
<input type="submit" name="logout" value="Abmelden">
</form><br></span>
<?php
}
?>
wenn ich es so schreibe gibt mit contenido im module bereich nämlich einen roten punkt aus! (hups.. da hab ich wohl wieder was falsch eingegeben - wie schon den ganzen tag über :? )

ach ja hab die version 4.4.5 - läuft momentan aber noch offline!

Verfasst: Di 3. Mai 2005, 21:57
von HerrB
Wenn man auf der roten Kugel einen Augenblick verweilt, erhält man eine i.A. wenig aussagefähige Fehlermeldung und die aussagefähige Angabe der Zeile, wo der Fehler liegt.

Code: Alles auswählen

<span class="textklein"> 
<b>LogIn</b></span><p> 

<?php 

if ($auth->auth["uid"] == 'XYZ') { 
   echo "<form method='post' action='front_content.php?idcatart=000'>"; 
}

if ($auth->auth["uid"] == 'XYZ123') {
   echo "<form method='post' action='front_content.php?idcatart=001'>"; 
?> 
<span class="textklein">Benutzername:</span><br> 
<input size="22" type="input" name="username" value=""><br> 
<span class="textklein">Passwort:</span><br> 
<input size="22" type="password" name="password" value=""><br> 

<input type="submit" name="login" value="Anmelden"> 
</form><br> 
<?php 
} else { 
?> 
<span class="textklein"><b>Angemeldet als:</b> <br> <?php echo $auth->auth["uname"]; ?> 
<br><br> 
<form method="post" action="front_content.php?idcatart=<?php echo $idcatart; ?>"> 
<input type="submit" name="logout" value="Abmelden"> 
</form><br></span> 
<?php 
} 
?>
Technisch gesehen sollte es jetzt funktionieren. Was Du möchtest, jedoch nicht - so lange man nicht angemeldet ist (und die Anmeldung benötigt) ist $auth->auth["uid"] == 'nobody'. Du kannst also nicht vorher steuern, wohin es nach der Anmeldung geht.

Dafür würde mir nur ein spezieller Link oder Menüpunkt einfallen, der nur sichtbar ist, wenn man angemeldet ist (z.B. "Meine Welt"). Hier wird in Abhängigkeit von uid oder - vermutlich besser lesbar - uname ein anderer Link unterlegt.

Es sei erwähnt, dass - sofern Du nur die Eigenschaft "geschützt" verwendest - Nutzer A auch auf die Seite von Nutzer B zugreifen kann, wenn die Artikel-ID bekannt ist und dies nicht durch eine entsprechendes Modul auf der Seite verhindert wird.

Gruß
HerrB

Verfasst: Mi 4. Mai 2005, 09:35
von emergence
sieh dir mal den folgenden beitrag an...
da gehts um eine weiterleitung nach einem login auf eine entsprechende idcatart... je nach gruppe

-> http://www.contenido.org/forum/viewtopic.php?t=7966

Verfasst: Mi 4. Mai 2005, 09:51
von HerrB
Ja, ist mir auch gerade eingefallen - Man kann natürlich nicht vorher bestimmen, wo es nachher hingeht, aber man kann nach der Anmeldung entsprechend weiterleiten.

Die Links sollten helfen.

Gruß
HerrB

Verfasst: Mi 4. Mai 2005, 12:15
von chrisk17
hmmm also ich habe jetzt folgendes in mein layout eingefügt! (oder muss das wo anders hin ??

Code: Alles auswählen

<?php
if ($auth->auth["uid"] != 'nobody') { 
    $sql = "SELECT gruppe FROM con_phplib_auth_user_md5 WHERE user_id = '".$auth->auth["uid"]."'"; 
    $db->query($sql); 
    if ($db->next_record()) { 
        // gruppe gefunden 
        $meine_gruppe = $db->f("gruppe"); 
        if ($meine_gruppe == "bday") { 
            $idcatart = 73; // dieser artikel soll aufgerufen werden 
        } 

        if ($meine_gruppe == "gday") { 
            $idcatart = 33; // dieser artikel soll aufgerufen werden 
        } 

    } 
}
?>
ich habe zwei gruppen eingerichtet und zwei benutzer - jeder ist ein einer gruppe eingetragen!

wenn man sich jetzt einloggt - steht da auch das man als "XYZ" eingeloggt ist - man wird aber nicht z.b. auf die seite mit der idcatart 33 weitergeleitet!

Verfasst: Mi 4. Mai 2005, 12:22
von emergence
-> das muss wo anders hin -> front_content.php

Verfasst: Mi 4. Mai 2005, 12:32
von chrisk17
ich habe den code jetzt in die front_contend.php geschrieben!
(ganz am ende - oder bekommt die da einen bestimmten platz?)

ich kann man wie gewohnt einloggen, werde aber immer noch nicht automatisch auf die seite für die jeweilige gruppe geschickt !

hab ich da in dem code mit der abfrage was falsch ??
oder in dem code für das login ???

hier der login code:

Code: Alles auswählen

<span class="textklein">
<b>LogIn</b></span><p>
<?php

if ($auth->auth["uid"] == "nobody")
{
?>
<form method="post" action="front_content.php?idcatart=<?php echo $idcatart; ?>">
<span class="textklein">Benutzername:</span><br>
<input size="22" type="input" name="username" value=""><br>
<span class="textklein">Passwort:</span><br>
<input size="22" type="password" name="password" value=""><br>

<input type="submit" name="login" value="Anmelden">
</form><br>
<?php
} else {
?>
<span class="textklein"><b>Angemeldet als:</b> <br> <?php echo $auth->auth["uname"]; ?>
<br><br>
<form method="post" action="front_content.php?idcatart=<?php echo $idcatart; ?>">
<input type="submit" name="logout" value="Abmelden">
</form><br></span>
<?php
}
?>

Verfasst: Mi 4. Mai 2005, 12:36
von emergence
du liest nicht gerne die postings komplett durch oder ?

-> http://www.contenido.org/forum/viewtopi ... 5815#45815

der code gehört nach dem

Code: Alles auswählen

$auth->login_if(true);
aber noch innerhalb der if abfrage...

Verfasst: Mi 4. Mai 2005, 12:52
von chrisk17
:oops: den punkt hab ich wohl überlesen!!! -sorry-

habe jetzt in der front_content.php folgendes stehen

Code: Alles auswählen

....
if (isset($username))
{
  $auth->login_if(true);
    if ($auth->auth["uid"] != 'nobody') { 
    $sql = "SELECT gruppe FROM con_phplib_auth_user_md5 WHERE user_id = '".$auth->auth["uid"]."'"; 
    $db->query($sql); 
    if ($db->next_record()) { 
        // gruppe gefunden 
        $meine_gruppe = $db->f("gruppe"); 
        if ($meine_gruppe == "bday") { 
            $idcatart = 73; // dieser artikel soll aufgerufen werden 
        } 

        if ($meine_gruppe == "gday") { 
            $idcatart = 33; // dieser artikel soll aufgerufen werden 
        } 

    } 
} 
}

if (isset($logout))
{
  $auth->logout(true);
  $auth->unauth(true);
  $auth->auth["uname"] = "nobody";
}
....
ich schätze mal da habe ich wieder irgendwo ´nen bock drin, weil datt immer noch nicht umgeleitet wird nach einem login! :roll:

Verfasst: Mi 4. Mai 2005, 13:11
von emergence
die position stimmt ja wenigstens...

den code wirst du ohne anpassungen so aber auch nicht übernehmen können... in den ersten zwei postings von Condor steht das er die tabelle erweitert hat... und zwar um das feld gruppe...
das steht bei dir ja nicht zur verfügung...

der grundsätzliche ablauf ist aber der selbe...

nur muss man halt in der gruppen zugehörigkeitstabelle suchen

$auth->auth["uid"] hast du ja
und das ganze wird mit
con_groupmembers und con_group
verknüpft...

anstelle von

Code: Alles auswählen

$sql = "SELECT gruppe FROM con_phplib_auth_user_md5 WHERE user_id = '".$auth->auth["uid"]."'";
würde das in etwa so aussehen...

Code: Alles auswählen

$sql = "SELECT groupname AS gruppe FROM ".$cfg["tab"]["groups"]." AS A, ".$cfg["tab"]["groupmembers"]." AS B WHERE A.group_id = B.group_id AND B.user_id= '".$auth->auth["uid"]."'";
bei den ergebniss das die db liefert sollte man noch wissen das ein prefix in der db beim gruppennamen vorhanden ist...
also

Code: Alles auswählen

$meine_gruppe = $db->f("gruppe");
ändern in

Code: Alles auswählen

$meine_gruppe = str_replace ("grp_", "", $db->f("gruppe"));
sollte das beheben....

Verfasst: Mo 9. Mai 2005, 09:01
von chrisk17
JIPPI!!!!
es funktioniert!

DANKE DANKE DANKE.... :D

Verfasst: Mo 9. Mai 2005, 09:06
von emergence
chrisk17 hat geschrieben:JIPPI!!!!
es funktioniert!

DANKE DANKE DANKE.... :D
bitte...