| Autor |
Nachricht |
loveandhate
Threadersteller
Dabei seit: 24.12.2007
Ort: Seligenstadt
Alter: 18
Geschlecht:
|
Verfasst Do 03.01.2008 16:57
Titel
|
 |
|
ich hab ma was zusammen geschreiben....sollte doch eigendlich richtig sein...
weil der code so lange is, hab ich ihn ma geuppt....is ne txt datei.....
wenn einer zeit hat kann er sich des vlltt ma angucken
thx
http://rapidshare.com/files/80951288/mysql_tabelle.txt
|
|
| |
|
 |
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Do 03.01.2008 17:52
Titel
|
 |
|
|
Du kannst für die Rechte auch ne Bitmaske benutzen, das ist so der elegante Weg.
|
|
| |
|
 |
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: KF
Alter: -
Geschlecht:
|
Verfasst Do 03.01.2008 18:05
Titel
|
 |
|
| bacon hat geschrieben: | | Du kannst für die Rechte auch ne Bitmaske benutzen, das ist so der elegante Weg. |
Öhm... und wie funktioniert das in PHP / mySQL? Wär ja cool zu wissen, den Wikieintrag fand ich hier n bisschen zu allgemein, bzw hab ich nich geblickt...
|
|
| |
|
 |
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
|
| |
|
 |
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: KF
Alter: -
Geschlecht:
|
Verfasst Do 03.01.2008 21:36
Titel
|
 |
|
Danke dir!
|
|
| |
|
 |
loveandhate
Threadersteller
Dabei seit: 24.12.2007
Ort: Seligenstadt
Alter: 18
Geschlecht:
|
Verfasst Fr 04.01.2008 22:09
Titel
|
 |
|
hat einer des script ma angeguckt?.....
bin leider noch net dazu gekommen, es zu testen, da ich gerade auf nen anderen hoster umsteig....
|
|
| |
|
 |
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: KF
Alter: -
Geschlecht:
|
Verfasst Sa 05.01.2008 02:00
Titel
|
 |
|
| loveandhate hat geschrieben: | hat einer des script ma angeguckt?.....
bin leider noch net dazu gekommen, es zu testen, da ich gerade auf nen anderen hoster umsteig.... |
rapidshare stinkt! also ne, ich nich...
|
|
| |
|
 |
achwasweisich
Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht:
|
Verfasst So 06.01.2008 11:22
Titel
|
 |
|
Also was mir sofort ins Auge springt:
| Code: | | SELECT User FROM $TableLogin WHERE User='".stripslashes($_REQUEST['User'])."' AND Passwort='".stripslashes($_REQUEST['Passwort'])."'" |
Du solltest Dich mal mit dem Thema SQL-Injection auseinandersetzen.
Nimm doch einfach mal an, ich schreibe in das Text-Feld "Password" folgendes:
| Code: | | NULL';drop table user;SELECT '1 |
Zusammengesetzt würde das ergeben:
| Code: | | SELECT User FROM $TableLogin WHERE User='Bla' AND Passwort='NULL';drop table user;SELECT '1' |
Nur mal so als ganz schnelles Beispiel.
Okay, weiter...
| Code: |
if(mysql_num_rows(mysql_query("SELECT User FROM $TableLogin WHERE User='".stripslashes($_REQUEST['User'])."' AND Passwort='".stripslashes($_REQUEST['Passwort'])."'", $DatabasePointer))==1)
{
if(mysql_num_rows(mysql_query("SELECT Rechte From $TableLogin WHERE Rechte='".stripslashes($_REQUEST['Rechte']."'==['admin'])))
{
// ...
}else{
mysql_select_db($Database, $DatabasePointer);}
if(mysql_num_rows(mysql_query("SELECT Rechte From $TableLogin WHERE Rechte='".stripslashes($_REQUEST['Rechte']."'==['member1'])))
{
// ...
}
|
Warum so kompliziert und verschachtelt und vor allem mit immer neuen Verbindungen zur Datenbank?
Es geht doch auch einfacher:
| Code: |
$current_user_right = '';
// minimum an Sicherheit
// da magic_quotes_gpc eingeschlatet sein könnte, wendet man eben erst mal pauschal
// stripslashes an, um doppelte maskierung zu vermeiden.
$req_user = mysql_real_escape_string(stripslashes($_REQUEST['User']));
$req_passwd = mysql_real_escape_string(stripslashes($_REQUEST['Passwort']));
$db_result = mysql_query("SELECT Rechte FROM $TableLogin
WHERE User='$req_user' AND Passwort='$req_passwd'",
$DatabasePointer);
if ($db_result) {
$array_dbrow = mysql_fetch_row($db_result);
$current_user_right = $array_dbrow[0];
}
|
Nach diesem Code (der SQL-Injection wenigstens im Gröbsten verhindert) hast Du eine Variable $current_user_right,
die den Inhalt der Spalte "Rechte" des Users enthält.
Ist die Variable leer, waren Benutzername und/oder Passwort falsch.
Ansonsten kannst Du ja leicht mittels
| Code: | | if ($current_user_right == 'admin') { } elseif ($current_user_right == 'deppvomdienst') {} // ... usw. |
an jeder beliebigen Stelle später im Code auf die Rechte wieder zugreifen, ohne jedesmal eine neue Query an die Datenbank schicken zu müssen.
So jezt nur eins noch:
Statt
| Code: |
echo " bla
blubber \"jojo\"
foobar \"hallo\"
";
|
würde ich zukünftig mal
| Code: |
echo <<<EOT
bla
blubber "jojo"
foobar "hallo"
EOT;
|
Oder aber, wenn ich sowieso nur HTML-Code schreibe, dann doch einfach
| Code: |
<?PHP
// PHP-code-stuff
?>
<!-- man kann HTML direkt in eine PHP-Datei schreiben!! -->
<html-tag name="beispiel">
<h2>Blubber!</h2>
<?PHP
//more PHP-code
?>
|
so weit mal von mir
|
|
| |
|
 |
| |
|
 |
| Ähnliche Themen |
[PHP] Online-User Anzeige
Email PHP-Skript - mehrere User pop3
2 div-bereiche nebeneinander...
[Suche] Gute Admin-Bereiche
Bereiche in Flash durch Kennwort schützen
User Stylesheet..
|
 |