Login Modul erweitern, aber wie ?
Login Modul erweitern, aber wie ?
Ich benutzte das simple login modul. Wie mache ich das jetzt so, das wenn ein bestimmter Benutzer sich einloggt, er auf eine bestimmte seite geht, aber alle anderen auf eine andere ? Die DB: con_phplib_auth_user_md5 hab ich z.B um den Punkt Mitglied erweitert. Wenn jetzt dort bei Mitglied "ja" steht soll er auf Seite A, steht da aber "nein" dann geht er auf die Seite B. Wo muss ich das einfügen oder verändern ? In der front_content.php ? Weiss das jemand vielleicht. Bis denne.
2. Mir fällt da noch was ein. Ich habe 2. Geschützte Bereiche. Deshalb hab ich auch 2 Login-Module. Aber das eine Modul funktioniert nicht richtig. Wenn ich mich dort einlogge dann steht da auch "eingeloggt als...." und dadrüber hab ich die geschützte Navi. Die müsste ja jetzt funktionieren da ich ja eingeloggt bin. Aber es passiert was anderes. Mein CMS denkt ich bin nicht eingeloggt und schmeisst das Login-Fenster von Contenido davor. Wenn ich mich jetzt nochmal einlogge in das Contendio-Fenster, dann geht es und ich kann die Navi benutzten. Was ist da los ? Hab ich da was übersehen oder was ist das ?
2. Mir fällt da noch was ein. Ich habe 2. Geschützte Bereiche. Deshalb hab ich auch 2 Login-Module. Aber das eine Modul funktioniert nicht richtig. Wenn ich mich dort einlogge dann steht da auch "eingeloggt als...." und dadrüber hab ich die geschützte Navi. Die müsste ja jetzt funktionieren da ich ja eingeloggt bin. Aber es passiert was anderes. Mein CMS denkt ich bin nicht eingeloggt und schmeisst das Login-Fenster von Contenido davor. Wenn ich mich jetzt nochmal einlogge in das Contendio-Fenster, dann geht es und ich kann die Navi benutzten. Was ist da los ? Hab ich da was übersehen oder was ist das ?
zum ersten punkt
da würd ich sagen in der front_content.php
nach dem $auth->login_if(true); kannst du ja mittels einer
mysql abfrage prüfen ob es ein entsprechender user ist oder nicht...
und dem entsprechend den wert für idcatart setzen...
sollte funktionieren...
da würd ich sagen in der front_content.php
Code: Alles auswählen
if (isset($username))
{
$auth->login_if(true);
}
mysql abfrage prüfen ob es ein entsprechender user ist oder nicht...
und dem entsprechend den wert für idcatart setzen...
sollte funktionieren...
*** make your own tools (wishlist :: thx)
Hi,
aha, theoretisch hab ich das verstanden. Aber was ist, wenn ich die Spalte "Gruppe" hab und es z.B. 5 Möglichkeiten gitb. Soll ich dann 5 mal eine if Abfrage machen oder wie soll das dann aussehen ? Kannst du mir mal so ein Beispiel zeigen was ich da einbauen soll ? Reicht wenn du das so ausm Kopf sagst. Ich kann dann ja da rumfummeln.
aha, theoretisch hab ich das verstanden. Aber was ist, wenn ich die Spalte "Gruppe" hab und es z.B. 5 Möglichkeiten gitb. Soll ich dann 5 mal eine if Abfrage machen oder wie soll das dann aussehen ? Kannst du mir mal so ein Beispiel zeigen was ich da einbauen soll ? Reicht wenn du das so ausm Kopf sagst. Ich kann dann ja da rumfummeln.
fürs erste mach es mit if abfragen, wenn das funktioniert kannst du dir noch immer ein eleganteres system ausdenken und entsprechend implementieren...Condor hat geschrieben:aha, theoretisch hab ich das verstanden. Aber was ist, wenn ich die Spalte "Gruppe" hab und es z.B. 5 Möglichkeiten gitb. Soll ich dann 5 mal eine if Abfrage machen oder wie soll das dann aussehen ?
*** make your own tools (wishlist :: thx)
Hi,
sag mal wie schnell bist du ? Bist du überhaupt ein Mensch (nicht negativ gemeint) ?
Soll ich jetzt die Abfragen so schreiben oder wie:
Ich weiss nämlich nicht genau wie ich das schreiben soll.
sag mal wie schnell bist du ? Bist du überhaupt ein Mensch (nicht negativ gemeint) ?
Soll ich jetzt die Abfragen so schreiben oder wie:
Code: Alles auswählen
$query1 = "SELECT gruppe FROM con_phplib_auth_user_md5 WHERE gruppe = '1';
Condor hat geschrieben:sag mal wie schnell bist du ? Bist du überhaupt ein Mensch (nicht negativ gemeint) ?


ähm nein...Condor hat geschrieben:Soll ich jetzt die Abfragen so schreiben oder wie:Ich weiss nämlich nicht genau wie ich das schreiben soll.Code: Alles auswählen
$query1 = "SELECT gruppe FROM con_phplib_auth_user_md5 WHERE gruppe = '1';
wenn du einen eingeloggten user hast, ist die user_id in der variable
$auth->auth["uid"] gespeichert...
falls nicht ist dort nobody gespeichert...
deine selektion erfolgt also nach der user_id die du in $auth->auth["uid"] gespeichert hast...
zb: (nicht getestet...)
Code: Alles auswählen
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 == "WASWEISSICH") {
$idcatart = 10; // dieser artikel soll aufgerufen werden
}
if ($meine_gruppe == "WASWEISSICH2") {
$idcatart = 20; // dieser artikel soll aufgerufen werden
}
}
}
*** make your own tools (wishlist :: thx)
Hallo,
so, ich hab das jetzt so gemacht wie du es mir gesagt hast emergence. Es funktioniert super. Da hab ich aber noch ein Problem, wobei ich keinen Einfall für hab und zwar folgendes: Ich melde mich per Login-Modul ein und lande in meinem Geschützten Bereich. Jetzt hab ich meine Navigation mit meinen Punkten (Punkt A, Punkt B, Punkt C usw.). Wenn ich jetzt aber auf Punkt C klicke sollte geprüft werden ob ich berechtigt bin dort hin zu gelangen, z.B in ein Forum. In der DB gibts dann z.B die Spalte "Gruppe" oder sowas. Wenn dort jetzt 1 steht sollte man nicht ins Forum gelangen, ist man aber Gruppe=2 dann kommt man ins Forum. Ich brauche das, da nur bestimmte Benutzer in diesen Bereich dürfen, z.B nur 4 Leute. Das Problem ist ja, das ich schon eingeloggt bin und ich nicht weiss wie das Script nochmal prüfen soll. Hat jemand eine Idee ?
2. Noch eins. Ich hab mein Registrierungs-Modul so gebaut das wenn z.B der Name vergessen wurde, eine Fehlermeldung kommt. Die Fehlermeldung wird mit "echo" erzeugt. Das Problem ist, wenn die Fehlermeldung kommt wird ja eine leere, weiße Seite generiert und das sieht nicht so schön aus. Was muss ich tun damit die Fehlermeldung im gleichem Container bzw. gleicher Seite wie das Formular kommt ?
so, ich hab das jetzt so gemacht wie du es mir gesagt hast emergence. Es funktioniert super. Da hab ich aber noch ein Problem, wobei ich keinen Einfall für hab und zwar folgendes: Ich melde mich per Login-Modul ein und lande in meinem Geschützten Bereich. Jetzt hab ich meine Navigation mit meinen Punkten (Punkt A, Punkt B, Punkt C usw.). Wenn ich jetzt aber auf Punkt C klicke sollte geprüft werden ob ich berechtigt bin dort hin zu gelangen, z.B in ein Forum. In der DB gibts dann z.B die Spalte "Gruppe" oder sowas. Wenn dort jetzt 1 steht sollte man nicht ins Forum gelangen, ist man aber Gruppe=2 dann kommt man ins Forum. Ich brauche das, da nur bestimmte Benutzer in diesen Bereich dürfen, z.B nur 4 Leute. Das Problem ist ja, das ich schon eingeloggt bin und ich nicht weiss wie das Script nochmal prüfen soll. Hat jemand eine Idee ?
2. Noch eins. Ich hab mein Registrierungs-Modul so gebaut das wenn z.B der Name vergessen wurde, eine Fehlermeldung kommt. Die Fehlermeldung wird mit "echo" erzeugt. Das Problem ist, wenn die Fehlermeldung kommt wird ja eine leere, weiße Seite generiert und das sieht nicht so schön aus. Was muss ich tun damit die Fehlermeldung im gleichem Container bzw. gleicher Seite wie das Formular kommt ?
zu 1: In der Navigation sollte überprüft werden, ob der Nutzer die Berechtigung hat, den entsprechenden Punkt überhaupt sehen zu dürfen (eben weil er z.B. ins Forum darf).
Alternativ könntest Du ein spezielles Mopdul stricken, welches als Weiterleiter agiert: Klick auf Navigations-Link -> Seite mit Weiterleiutungsmodul wird aufgerufen -> Weiterleitungsmodul prüft Berechtigung und leitet auf Fehlerseite oder zur gewünschten Seite weiter.
zu 2: Poste doch mal den Code - ist sonst schwer, dazu eine Aussage zu treffen.
Gruß
HerrB
Alternativ könntest Du ein spezielles Mopdul stricken, welches als Weiterleiter agiert: Klick auf Navigations-Link -> Seite mit Weiterleiutungsmodul wird aufgerufen -> Weiterleitungsmodul prüft Berechtigung und leitet auf Fehlerseite oder zur gewünschten Seite weiter.
zu 2: Poste doch mal den Code - ist sonst schwer, dazu eine Aussage zu treffen.
Gruß
HerrB
Zuletzt geändert von HerrB am So 17. Apr 2005, 15:26, insgesamt 1-mal geändert.
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Hi,
hier ist z.B so ein Registrierungsmodul:
Zum 1. Punkt, muss ich mal sehen. Ich hab nämlich keine Ahnung wie ich das in die Praxis umsetzen soll. Das Problem ist ja das ich schon eingeloggt bin und wenn ich jetzt z.B auf einen NaviPunkt klicke dann soll er ja prüfen. Aber wo packe ich das den rein ? Auch wenn ich so ein Script schreiben würde wo soll ich das reinpacken. Ich kann doch den NaviPunkt nicht auf das Script verlinken. Wie du schon sagtest, dann müsste schon in der Navi geprüft werden oder so und ich hab keinen blassen schimmer wie ich dat machen soll.
hier ist z.B so ein Registrierungsmodul:
Code: Alles auswählen
<table border="0" width="69%" id="table1">
<tr>
<td width="198">Vorname</td>
<td>
<form method="POST" action="../cms/regist/intern/einfuegen.php">
<p><input type="text" name="vn" size="20"></p>
</td>
</tr>
<tr>
<td width="198">Nachname</td>
<td>
<p><input type="text" name="nn" size="20"></p>
</td>
</tr>
<tr>
<td width="198">Strasse</td>
<td>
<p><input type="text" name="strasse" size="20"></p>
</td>
</tr>
<tr>
<td width="198">PLZ</td>
<td>
<p><input type="text" name="plz" size="20"></p>
</td>
</tr>
<tr>
<td width="198">Ort</td>
<td>
<input type="text" name="ort" size="20"></td>
</tr>
<tr>
<td width="198">Internetadresse</td>
<td>
<p><input type="text" name="link" size="20"></p>
</td>
</tr>
<tr>
<td width="198">Telefon</td>
<td>
<p><input type="text" name="tel" size="20"></p>
</td>
</tr>
<tr>
<td width="198">Fax</td>
<td>
<p><input type="text" name="fax" size="20"></p>
</td>
</tr>
<tr>
<td width="198">Handy</td>
<td>
<p><input type="text" name="mobil" size="20"></p>
</td>
</tr>
<tr>
<td width="198">Email</td>
<td>
<p><input type="text" name="mail" size="20"></p>
</td>
</tr>
<tr>
<td width="198">Funktion</td>
<td>
<p><select size="1" name="funk">
<option value="OM">Obermeister</option>
</select></p>
</td>
</tr>
<tr>
<td width="198"> </td>
<td> </td>
</tr>
<tr>
<td colspan="2">
<p align="center"><input type="submit" value="Absenden" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></p>
</form>
<p> </td>
</tr>
</table>
Jut, nur enthält dieses Modul ja nicht den Überprüfungscode... der dürfte dann wohl in einfuegen.php stehen... und die Datei sieht wie aus ...?
Gruß
HerrB
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Hi,
tut mir leid. Habs vergessen zu posten.
einfuegen.php
tut mir leid. Habs vergessen zu posten.
einfuegen.php
Code: Alles auswählen
<?PHP
// Zugangsdaten importieren
include('db.inc');
// Verbindung zum Datenbankserver herstellen
$link=mysql_pconnect($dbserver, $dbuser, $dbpasswd);
if ($link == FALSE)
{
echo "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden.\n";
echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
exit (); // PHP-Script beenden
}
// Datenbank auswaehlen
$dblink=mysql_select_db($dbname);
if ($dblink == FALSE)
{
echo "<p><b>Leider kann die Datenbank nicht geöffnet werden.\n";
echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
exit (); // PHP-Script beenden
}
// Variablen aus dem Forumlar übernehmen
$vn=$_POST["vn"];
$nn=$_POST["nn"];
$strasse=$_POST["strasse"];
$plz=$_POST["plz"];
$ort=$_POST["ort"];
$link=$_POST["link"];
$tel=$_POST["tel"];
$fax=$_POST["fax"];
$handy=$_POST["mobil"];
$mail=$_POST["mail"];
$funk=$_POST["funk"];
// Überpruefen ob der User schon vorhanden ist
$query1 = "SELECT vorname FROM $tab WHERE vorname LIKE '$vn' and nachname LIKE '$nn'";
$result = mysql_query($query1);
// Fehlermeldung ausgeben, bzw. User einfuegen
$num=mysql_NumRows($result);
/*
if ($T1 == "" and $T2 == "") { echo "Bitte tragen Sie einen Namen und ein Passwort ein !!!";}
else {
if (strlen($T1) < 5 || strlen($T2) < 5) { echo "Der Name und das Passwort müssen länger sein als 4 Zeichen !!!";}
else {
*/
if ($vn == "") {echo "Vorname eingeben";}
elseif ($nn == "") {echo "Nachname eingeben";}
elseif ($strasse == "") {echo "Strasse eingeben";}
elseif ($plz == "") {echo "PLZ eingeben";}
elseif ($ort == "") {echo "Ort eingeben";}
elseif ($tel == "") {echo "Telefon eingeben";}
elseif ($mail == "") {echo "Email eingeben";}
else {
if ($num) {
echo "User schon vorhanden!";
}
else
{
// Zeichen auseinander nehmen für Passwort
$ze1 = substr($vn,0,1);
$ze2 = substr($nn,0,1);
// Quersumme errechnen
function quersumme($zahl) {
settype($zahl, "string");
$letzter = strlen($zahl)-1;
$summe = 0;
for($i=0; $i<=$letzter; $i++) {
$summe = $summe+$zahl[$i];
}
return $summe;
}
$wert = $plz;
$quer = quersumme($wert);
$passwort = $ze1.$funk.$ze2.$quer;
$pass_enc = md5($passwort);
$uid = md5($nn);
// alles in die DB einfügen
$query2="INSERT INTO $tab
SET user_id='$uid',
username='$nn',
vorname='$vn',
nachname='$nn',
address_street='$strasse',
address_zip='$plz',
address_city='$ort',
webseite='$link',
telephone='$tel',
fax='$fax',
handy='$handy',
email='$mail',
password='$pass_enc',
funktion='$funk';";
$result2 = mysql_query($query2);
if ($result2)
{
print"<p><blockquote><b>$nn</b> wurde mit dem Passwort <b>$passwort</b> erfolgreich aufgenommen.<blockquote></p>";
}
else
{
print"Datenbankfehler! Kunde konnte nicht aufgenommen werden!";
}
}
}
mysql_close();
?>
Nun, Du hast mindestens zwei Möglichkeiten.
Entweder Du nimmst den Code aus einfuegen.php und verwendest ihn als ein Modul, welches dann in dem Template der Seite, die nach erfolgreicher oder fehlerhafter Registrierung angezeigt wird, verwendet wird (wobei der Code dann noch überarbeitet werden sollte - so ganz dürfte er nicht 1:1 als Modul verwendbar sein. Abgesehen davon brauchst Du - wenn die Tabellen für Deine Daten auch in der Contenido-DB sind, keine zusätzliche DB-Verbindung).
Jede Ausgabe nach Ausführung des Codes erscheint dann entsprechend an der Stelle auf der Seite. Das dürfte übrigens die einfachere Variante sein.
Oder Du leitest aus einfuegen.php grundsätzlich an eine Seite weiter, wobei im Aufruf-Parameter die Status-Information mitgegeben wird (z.B. front_content.php?DasÜbliche&sStatus=NoName). Für die aufzurufende Seite programmierst Du wieder ein Modul, welches die Parameterinformationen dekodiert (z.B. if (_REQUEST["sStatus"] == "NoName") echo "Es ist kein Name angegeben";). Dieses Modul setzt Du dann im Template dieser Seite.
Ich hoffe, das war jetzt noch verständlich.
Die zweite Lösung ist nicht so elegant und schränkt Dich später ein. Möchtest Du z.B. mal mehr Informationen als Rückmeldung angeben (z.B. "Sie sind mit folgenden Angaben registriert: ...") wird es über den Aufruf-Parameter schwer. Klar, man kann auch eine Übergabe-Variable deklarieren (denke ich, habe ich jetzt noch nicht gemacht), aber im Großen und Ganzen ist die zweite Lösung nur Flickwerk...
Gruß
HerrB
Entweder Du nimmst den Code aus einfuegen.php und verwendest ihn als ein Modul, welches dann in dem Template der Seite, die nach erfolgreicher oder fehlerhafter Registrierung angezeigt wird, verwendet wird (wobei der Code dann noch überarbeitet werden sollte - so ganz dürfte er nicht 1:1 als Modul verwendbar sein. Abgesehen davon brauchst Du - wenn die Tabellen für Deine Daten auch in der Contenido-DB sind, keine zusätzliche DB-Verbindung).
Jede Ausgabe nach Ausführung des Codes erscheint dann entsprechend an der Stelle auf der Seite. Das dürfte übrigens die einfachere Variante sein.
Oder Du leitest aus einfuegen.php grundsätzlich an eine Seite weiter, wobei im Aufruf-Parameter die Status-Information mitgegeben wird (z.B. front_content.php?DasÜbliche&sStatus=NoName). Für die aufzurufende Seite programmierst Du wieder ein Modul, welches die Parameterinformationen dekodiert (z.B. if (_REQUEST["sStatus"] == "NoName") echo "Es ist kein Name angegeben";). Dieses Modul setzt Du dann im Template dieser Seite.
Ich hoffe, das war jetzt noch verständlich.
Die zweite Lösung ist nicht so elegant und schränkt Dich später ein. Möchtest Du z.B. mal mehr Informationen als Rückmeldung angeben (z.B. "Sie sind mit folgenden Angaben registriert: ...") wird es über den Aufruf-Parameter schwer. Klar, man kann auch eine Übergabe-Variable deklarieren (denke ich, habe ich jetzt noch nicht gemacht), aber im Großen und Ganzen ist die zweite Lösung nur Flickwerk...
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Hi,
ich dachte, ich packe das Formular und die einfuegen.php in eine und mache das dann als Modul in Contenido rein. Aber es ging nicht. Er zeigte mir von vornerein, das kein Name, keine Adresse etc. eingegeben wurden. Ist ja auch verständlich weil es ja stimmt. Aber die Meldungen sollen ja erst kommen, nachdem man die Sachen verschickt hat. Das ist mein Problem. Ich weiss nicht wie ich das Modul dann schreiben muss.
ich dachte, ich packe das Formular und die einfuegen.php in eine und mache das dann als Modul in Contenido rein. Aber es ging nicht. Er zeigte mir von vornerein, das kein Name, keine Adresse etc. eingegeben wurden. Ist ja auch verständlich weil es ja stimmt. Aber die Meldungen sollen ja erst kommen, nachdem man die Sachen verschickt hat. Das ist mein Problem. Ich weiss nicht wie ich das Modul dann schreiben muss.
Hallo,
hab die ganze zeit dadran rumgefummelt aber nix vernünftiges hin bekommen. Wie müsste ich mein obiges Modul ändern, um beide teile in ein Modul zu bekommen und es Contenido freundlich machen ? Jemand eine Ahnung ?
2. Hab diese Standard Login-Modul:
In diesem Bereich:
wird ja die Ausgabe des Login Moduls beim eingeloggt sein erstellt. Ich möchte dort aber noch andere Sachen stehen haben, wie z.B "Marcel Mehring (Admin)". Dafür hab ich extra Spalten in meiner DB. Was müsste ich jetzt ändern bzw. erwietern ?
hab die ganze zeit dadran rumgefummelt aber nix vernünftiges hin bekommen. Wie müsste ich mein obiges Modul ändern, um beide teile in ein Modul zu bekommen und es Contenido freundlich machen ? Jemand eine Ahnung ?
2. Hab diese Standard Login-Modul:
Code: Alles auswählen
<table width="165" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" class="text" height="22" style="border-left:1px dashed #FFCC66; border-right:1px dashed #FFCC66; border-bottom:1px dashed #FFCC66; border-top:0px dashed #FFCC66; background-color: #FCF2D5; padding-left:10px">
<?php
if ($auth->auth["uid"] == "nobody")
{
?>
<form method="post" action="front_content.php?idcat=181">
<table border="0">
<tr><td>Benutzername</td></tr>
<tr><td><input type="input" name="username" value="" size="20"></td></tr>
<tr><td>Passwort</td></tr>
<tr><td><input type="password" name="password" value="" size="20"></td></tr>
</table>
<input type="submit" name="login" value="Anmelden">
</form><br>
<a href="front_content.php?idcat=180&idart=116">Registrieren</a><?php
} else {
?><p>Sie sind jetzt als <br>
<b><?php echo $auth->auth["uname"]; ?></b>
angemeldet
<br><br>
</p>
<form method="post" action="front_content.php?idcat=180">
<input type="submit" name="logout" value="Abmelden">
</form><br>
<?php
}
?>
</td></tr></table>
Code: Alles auswählen
<p>Sie sind jetzt als <br>
<b><?php echo $auth->auth["uname"]; ?></b>
angemeldet
<br><br>