PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1 Admin + 1 Admin mit eingeschränkten Rechten anlegen?



TS7
09.10.2007, 22:58
Hallo,
Ich habe eine Seite mit dem VMS 1.2 am Start.
Dort möchte ich gerne noch einen Admin einfügen.
Aber wie mache ich das?

Ich möchte gerne das der andere Admin in den Adminforce mit seinem eigen erstelltem Benutzername und Passwort kommt.
Er soll wie ein Co-Admin sein.

Er darf z.B nicht in den Seiteneinstellungen das Passwort von dem anderem Admin sehen und ändern (nur das eigene) bzw. die Betreiberdaten ändern, geschweige die überhaupt zu sehen.

Ich hoffe Ihr könnt mir helfen.

Lieben dank für die Antworten.

oje
10.10.2007, 20:54
ist normalerweise nicht möglich und wäre auch ein bisschen programmierarbeit sowas einzubauen

TS7
11.10.2007, 08:22
und so ein 2 Admin einzufügen? Mit anderen Benutzername + Passwort?

Gremlin
11.10.2007, 12:50
und so ein 2 Admin einzufügen? Mit anderen Benutzername + Passwort?

Du könntest ja folgendes machen:

adminforce/index.php

Aktuell:

if($_POST['check'] == "Login") {
@require_once ('../lib/functions.lib.php');
db_connect();
$page = mysql_fetch_array(db_query("SELECT admin_name, admin_pass FROM ".$db_prefix."_seitenkonfig LIMIT 1"));
if($_POST['loginname'] == $page['admin_name'] && $_POST['passwort'] == $page['admin_pass']) {
$_SESSION['admin'] = 1;
header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
}
}


if($_SESSION['admin'] == 1) {

@include_once('lib/header.php');
@include_once('content'.$_GET['content'].'.php');
@include_once('lib/footer.php');

} else {
Nachher:


if($_POST['check'] == "Login") {
@require_once ('../lib/functions.lib.php');
db_connect();
$page = mysql_fetch_array(db_query("SELECT admin_name, admin_pass, admin_name2, admin_pass2 FROM ".$db_prefix."_seitenkonfig LIMIT 1"));

// Hauptadmin
if($_POST['loginname'] == $page['admin_name'] && $_POST['passwort'] == $page['admin_pass']) {
$_SESSION['admin'] = 1;
header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
}

// Co-Admin
if($_POST['loginname'] == $page['admin_name2'] && $_POST['passwort'] == $page['admin_pass2']) {
$_SESSION['admin'] = 2;
header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
}
}


if($_SESSION['admin'] == 1 || $_SESSION['admin'] == 2) {

@include_once('lib/header.php');
@include_once('content'.$_GET['content'].'.php');
@include_once('lib/footer.php');

} else {

So, und dann fügst du einfach in die Datei wo der zweite Admin nicht rein soll folgendes ein:


if ($_SESSION['admin'] != 1){
head("Keine Berechtigung");
echo "Co-Admin hat hier keinen Zutritt";
foot();
include('lib/footer.php');
die();
}Natürlich brauchst du dafür noch das Feld admin_name2 und admin_pass2 in der vms_seitenkonfig wo die Daten von dem zweiten stehen.

Alles ungetestet

TS7
12.10.2007, 00:12
Thx erstmal für die Mühe. Habe alles gemacht was in dem obrigen Beitrag steht.
Leider funzt das Einloggen von beiden Admins nicht.

Es kommt nur die Fehlermeldung:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/virtual/Domain/htdocs/adminforce/index.php on line 8

Da steht bei mir:


$page = mysql_fetch_array(db_query("SELECT admin_name, admin_pass, admin_nam2, admin_pass2 FROM ".$db_prefix."_seitenkonfig LIMIT 1"));

Und wenn ich nichts eingebe und "Login" klicke, komme ich ins Adminforce mit 3 Fehlermeldungen.


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/virtual/Domain.de/htdocs/adminforce/index.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/Domain.de/htdocs/adminforce/index.php:8 ) in /var/www/virtual/Domain.de/htdocs/adminforce/index.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/Domain.de/htdocs/adminforce/index.php:8 ) in /var/www/virtual/Domain.de/htdocs/adminforce/index.php on line 19

Dort stehen die Zeilen:
Zeile 8: siehe oben
Zeile 13:
header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);

Zeile 19:
header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);


Würde mich über weitere Hilfe freuen.

Gremlin
12.10.2007, 04:00
admin_nam2,
Muss natürlich admin_name2 heissen :o die anderen Fehler dürften sich dann damit automatisch erledigen

TS7
12.10.2007, 14:44
Thx es funktioniert.

Jetzt würde ich gerne, das Admin 1 sein Benutzername + Passwort in der (unter Adminforce "Seiteneinstell.") "pageconfig.php" ändern kann.

Und Admin 2 sollte das auch können.

Bloss soll nur das Passwort und der Benutzername angezeigt werden, mit den er sich eingeloggt hat. Also nicht das andere, vom anderen Admin.

Das wäre erstmal die letzte frage.
Ich habe das schon versucht, aber löeider nicht geschafft.
Euch Profis traue ich das zu.

MfG

TS7
12.10.2007, 16:59
Ich habe es nochmal probiert, leider geht das nicht.
in der Datei (pageconfig.php) habe ich folgendes geändert.

Code vorher:

if ($_POST['updaten'] == 'Updaten !') {
db_query("UPDATE ".$db_prefix."_seitenkonfig SET
denied_domains='".$_POST['denied_domains']."',
wartung='".$_POST['wartung']."',
einzahlgrenze='".$_POST['einzahlgrenze']."',
re1='".$_POST['re1']."',
re2='".$_POST['re2']."',
re3='".$_POST['re3']."',
min_betteln = '".$_POST['min_betteln']."',
max_betteln = '".$_POST['max_betteln']."',
reload_betteln = '".$_POST['reload_betteln']."',
admin_name='".$_POST['admin_name']."',
admin_pass='".$_POST['admin_pass']."'

Code nachher:

if ($_POST['updaten'] == 'Updaten !') {
db_query("UPDATE ".$db_prefix."_seitenkonfig SET
denied_domains='".$_POST['denied_domains']."',
wartung='".$_POST['wartung']."',
einzahlgrenze='".$_POST['einzahlgrenze']."',
re1='".$_POST['re1']."',
re2='".$_POST['re2']."',
re3='".$_POST['re3']."',
min_betteln = '".$_POST['min_betteln']."',
max_betteln = '".$_POST['max_betteln']."',
reload_betteln = '".$_POST['reload_betteln']."',
admin_name='".$_POST['admin_name']."',
admin_pass='".$_POST['admin_pass']."',
admin_name2='".$_POST['admin_name2']."',
admin_pass2='".$_POST['admin_pass2']."'

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

Der Code davor:

<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name" value="<?=$interface['admin_name'];?>"></td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass" value="<?=$interface['admin_pass'];?>"></td>
</tr>

Der code danach:

<?php
if($_SESSION['admin'] = 1)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name" value="'$interface['admin_name']'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass" value="'$interface['admin_pass']'"></td>
</tr>';
}
elseif($_SESSION['admin'] = 2)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name2" value="'$interface['admin_name2']'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass2" value="'$interface['admin_pass2']'"></td>
</tr>';
}
else
{
head("Keine Berechtigung");
echo "Du bist kein Admin";
foot();
include('lib/footer.php');
die();;
}
?>

dude32
12.10.2007, 17:48
haste in der db auch die passenden spalten in der tabelle angelegt, sonst geht das updaten nicht, da das script ja nirgendwo reinschreiben kann

TS7
12.10.2007, 17:53
ja ich habe die in seitenkonfig neben den anderen Admindaten erstellt.
Im Adminforce zeigt er auch nichts mehr an, wenn ich auf Seiteneinstellungen klicke

dude32
12.10.2007, 18:23
ja ich habe die in seitenkonfig neben den anderen Admindaten erstellt.
Im Adminforce zeigt er auch nichts mehr an, wenn ich auf Seiteneinstellungen klicke


if ($_POST['updaten'] == 'Updaten !') {
db_query("UPDATE ".$db_prefix."_seitenkonfig SET
denied_domains='".$_POST['denied_domains']."',
wartung='".$_POST['wartung']."',
einzahlgrenze='".$_POST['einzahlgrenze']."',
re1='".$_POST['re1']."',
re2='".$_POST['re2']."',
re3='".$_POST['re3']."',
min_betteln = '".$_POST['min_betteln']."',
max_betteln = '".$_POST['max_betteln']."',
reload_betteln = '".$_POST['reload_betteln']."',
admin_name='".$_POST['admin_name']."',
admin_pass='".$_POST['admin_pass']."',
admin_name2='".$_POST['admin_name2']."',
admin_pass2='".$_POST['admin_pass2']."',

so wie es aussah fehlte am ende vom admin_pass2 ein komma

TS7
12.10.2007, 18:30
funktioniert leider auch nicht.
Ich glaube ich habe hier etwas falsch gemacht:


<?php
if($_SESSION['admin'] = 1)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name" value="'$interface['admin_name']'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass" value="'$interface['admin_pass']'"></td>
</tr>';
}
elseif($_SESSION['admin'] = 2)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name2" value="'$interface['admin_name2']'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass2" value="'$interface['admin_pass2']'"></td>
</tr>';
}
else
{
head("Keine Berechtigung");
echo "Du bist kein Admin";
foot();
include('lib/footer.php');
die();;
}
?>

TS7
12.10.2007, 18:54
So Leute,
Ich habe es geschafft. Juhu.

Hier der Code:

<?php
if($_SESSION['admin'] == 1)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name" value="'.$interface['admin_name'].'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass" value="'.$interface['admin_pass'].'"></td>
</tr>';
}
elseif($_SESSION['admin'] == 2)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name2" value="'.$interface['admin_name2'].'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass2" value="'.$interface['admin_pass2'].'"></td>
</tr>';
}
else
{
head("Keine Berechtigung");
echo "Du bist kein Admin";
foot();
include('lib/footer.php');
die();
}
?>

Danke für die Hilfe

dimek87
21.12.2009, 01:36
Könnte mann sowas vill auch zum Download reinstelle?

Wehre sehr sehr hilfreich für viele webmaster. oder?

jpwfour
21.12.2009, 11:46
Habs mal nach Codeschnippsel verschoben, evtl findet man es dann schneller.

Fürn DL Bereich müsste man das in eine verständliche Anleitung packen und nochmal mit dem VMS 1.2.4 testen.

Masterphil
21.12.2009, 12:16
Cooler Schnipsel, genau sowas habe ich gesucht, werde die Tage mal versuchen das in meinem alten VMS umzusetzten.

MfG

kakuzu
23.12.2009, 22:23
So Leute,
Ich habe es geschafft. Juhu.

Hier der Code:

<?php
if($_SESSION['admin'] == 1)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name" value="'.$interface['admin_name'].'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass" value="'.$interface['admin_pass'].'"></td>
</tr>';
}
elseif($_SESSION['admin'] == 2)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name2" value="'.$interface['admin_name2'].'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass2" value="'.$interface['admin_pass2'].'"></td>
</tr>';
}
else
{
head("Keine Berechtigung");
echo "Du bist kein Admin";
foot();
include('lib/footer.php');
die();
}
?>Danke für die Hilfe


Habe den Code nicht getestet aber so wie ich das sehe gibt es folgendes
Problem bei dem Code.

Admin1 ändert seine Daten so wird in dem mysql query aber auch
admin_name2 und admin_pass2 geändert, mit leeren Daten. da diese
angaben ja nicht im Formular auftauchen.

Natürlich habe ich auch eine Lösung für euch ^^

Code vorher


<?php
if($_SESSION['admin'] == 1)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name" value="'.$interface['admin_name'].'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass" value="'.$interface['admin_pass'].'"></td>
</tr>';
}
elseif($_SESSION['admin'] == 2)
{
echo '<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name2" value="'.$interface['admin_name2'].'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass2" value="'.$interface['admin_pass2'].'"></td>
</tr>';
}
else
{
head("Keine Berechtigung");
echo "Du bist kein Admin";
foot();
include('lib/footer.php');
die();
}
?>
Code nachher


<?php
if($_SESSION['admin'] == 1)
{
echo '<input type="hidden" name="admin_name2" value="'.$interface['admin_name2'].'">
<input type="hidden" name="admin_pass2" value="'.$interface['admin_pass2'].'">
<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name" value="'.$interface['admin_name'].'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass" value="'.$interface['admin_pass'].'"></td>
</tr>';
}
elseif($_SESSION['admin'] == 2)
{
echo '<input type="hidden" name="admin_name" value="'.$interface['admin_name'].'">
<input type="hidden" name="admin_pass" value="'.$interface['admin_pass'].'">
<tr bgcolor="#f0f0f0">
<td align="left"><b>Loginname (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_name2" value="'.$interface['admin_name2'].'"></td>
</tr>
<tr bgcolor="#f0f0f0"">
<td align="left"><b>Passwort (Adminforce)</b></td>
<td align="left">&nbsp;<input type="Text" name="admin_pass2" value="'.$interface['admin_pass2'].'"></td>
</tr>';
}
else
{
head("Keine Berechtigung");
echo "Du bist kein Admin";
foot();
include('lib/footer.php');
die();
}
?>
Auch dieser Code ist zur Zeit ungetestet. Sollte nun aber richtig sein.
So werden egal ob admin1 oder admin2 seine daten Ändert die daten
vom anderen Admin unsichtbar mit gesendet.

Gruß Kakuzu

Aradiv
27.12.2009, 23:08
bei dem Code kann man dem Co auch gleich das normale adminpasswort sagen den mit einem Blick in den Quellcode hat er es dann auch auch.

Besser das query entsprechend dem anpassen wer das formular absendet.

mfg
Aradiv

muenchner1989
04.01.2010, 12:04
Hallo,

irgentwie blicke ich durch die ganze Posts garnicht mehr durch und würde mich über eine dezente Anleitung doch sehr freuen.
Ich benutze derzeit die aktuellste Version!

jpwfour
04.01.2010, 18:03
Du könntest auch den adminforce Ordner kopieren (adminforce2 bsp.) daraus alle Dateien löschen, die der CO nicht sehen darf, beide Ordner via .htaccess schützen.

Macht vielleicht mehr Sinn, wenn es viele Dateien gibt, die er nicht öffnen können darf.

isaack
24.02.2010, 21:32
Hallo,

irgentwie blicke ich durch die ganze Posts garnicht mehr durch und würde mich über eine dezente Anleitung doch sehr freuen.
Ich benutze derzeit die aktuellste Version!

muss mich hier mal anschliesen.
wäre nicht schlecht wenn hier mal eine richtige anleitung kommen würde.

WaechterMedia
25.02.2010, 01:43
Es ist unschlau die Admin daten unsichtbar mitzusenden kann man im quelltext trotzdem mitlesen.
Da dieser vorgang ja höchsten mal ausgeführt wird würde ich das update einfach spliten.



if($_SESSION['admin'] = 1)
{
db_query("UPDATE ".$db_prefix."_seitenkonfig SET ,
admin_name='".$_POST['admin_name']."',
admin_pass='".$_POST['admin_pass']."'
LIMIT 1") or die(mysql_error());

}
elseif($_SESSION['admin'] = 2)
{
db_query("UPDATE ".$db_prefix."_seitenkonfig SET ,
admin_name2='".$_POST['admin_name2']."',
admin_pass2='".$_POST['admin_pass2']."'
LIMIT 1") or die(mysql_error());
}


Und schon hat sich das bezüglich der unsicherheit müsst natürlich dann die admin phrasen dann aus dem ursprünglichen update entfernen.