Passwortschutz für bestimmte "action" by PHP

#0
28.06.2006, 16:29
...neu hier

Beiträge: 4
#1 Hallo alle zusammen

habe ein großes Problem...

Habe mir ein Gästebuch mit PHP programmiert. Jedzd würde ich gerne diesen bereich verschlüsseln, damid mir keiner einfach so einträge frei schalten kann..

z.B.

www.Follmar.de/gaestebuch/index.php?action=admin

kann mir da jemand helfen?

Wäre echt sehr froh..
Seitenanfang Seitenende
28.06.2006, 19:01
Member
Avatar Laserpointa

Beiträge: 2176
#2 probier doch mal: http://board.protecus.de/t1602.htm
ist ein einfacher aber wirksamer Passwort Schutz

Greetz Lp
Seitenanfang Seitenende
02.07.2006, 11:12
...neu hier

Themenstarter

Beiträge: 4
#3 Hey danke aber da kann ich als Adresse ja nicht z.B. "www.Test.de/index.php?action=admin" schreiben oder?
Seitenanfang Seitenende
02.07.2006, 11:24
Member
Avatar Laserpointa

Beiträge: 2176
#4 doch denke schon:

PHP Code


<?php
if ( action == admin)
  {
    
// Passwort Abfrage ausführen
  
}
?>

Greetz Lp
Seitenanfang Seitenende
02.07.2006, 11:45
...neu hier

Themenstarter

Beiträge: 4
#5

PHP Code


<?php
$host
='localhost';
$dbname='**';
$dbuser='**';
$dbpasswort='**';

// Standard für neue GB-Einträge
$online='1';

// Macht aus Zeilenumbrüchen HTML-Breaks (<BR>)
function my_nl2br ($text)    {
    
$retvalue "";
    for (
$ii 0$ii strlen($text); $ii++)    {
        if (
$text[$ii]!= chr(13))
        
$text[$ii]=="\n" $retvalue .= "<BR>" $retvalue .= $text[$ii];
    }
    return 
$retvalue;
}



$connect=mysql_connect($host,$dbuser,$dbpasswort);
if (!
$connect
    {
    echo
' Fehler: Bei Verbindung mit Datenbank';
    }

$select_db=mysql_select_db($dbname);
if (!
$select_db
    {
    echo
' Konnte Datenbank nicht auswählen' ;
    }
    
if (!isset(
$action))
    {
       
// ausgabe gästebuch
    
echo '<a href="'.$PHP_SELF.'?action=admin"> Egal </a>'
    echo 
'<center>';
    echo 
'<form action="'.$PHP_SELF.'">';
    echo 
'<table>';
     
    echo 
'<tr>';
    echo 
'    <td> Name: </td>';
    echo 
'    <td> <input name="name" type="text" size="30" maxlength="30"> </td>';
    echo 
'</tr>';
     
    echo 
'<tr>';
    echo 
'    <td> Home Page: &amp;nbsp http:// </td>';
    echo 
'    <td> <input name="homepage" type="text" size="30" maxlength="30"> </td>';
    echo 
'</tr>';

    echo 
'<tr>';
    echo 
'    <td> Text: </td> ';
    echo 
'    <td> <textarea name="text" cols="23" rows="5"> </textarea> </td> ';
    echo 
'</tr>';

    echo 
'</table>';
     
    echo 
' <input name="action" type="hidden" value="speichern"> '
    echo 
'<input type="submit" value="absenden"> ';
    echo 
'<input type="reset" value="zurücksetzten"> ';
    echo 
'</form>';
    echo 
'</center>';
    
    
    
$sql="select * from gaestebuch where online='1' order by lfd desc";
    
$sql_ergebnis=mysql_query($sql);
    
    while(
$zeile=mysql_fetch_array($sql_ergebnis))
        {
        echo 
'<table border="1" width="100%">';
        echo 
'<tr bgcolor="#990033">';
        echo 
'    <td width="98%">'.$zeile["name"].'&amp;nbsp; schrieb am:&amp;nbsp;'.date("d.m.Y, H:i",$zeile["datum"]).'</td> ';
        echo 
'</tr>';
        echo 
'<tr bgcolor="#336699">';
        echo 
'    <td>'$zeile["text"].'</td>';
        echo 
'</tr>';
        echo 
'</table>';
        }
    }

elseif (
$action=='speichern')
        {
        
        
//$ip = getenv("REMOTE_ADDR");
        
$ip=$REMOTE_ADDR;
        
$time=time();
        
$text=my_nl2br($text);
        
$sql="insert into gaestebuch(datum,name,email,homepage,ip,text,privat,online)
        values('
$time','$name','$email','$homepage','$ip','$text','$privat','$online')";
        
mysql_query($sql);
        echo 
mysql_error();
        
header("location: $PHP_SELF");

        }
elseif (
$action=='admin')
    {
    if (!isset(
$admin_action))
        {
        echo 
'<h3> Einträge verwalten </h3> ';
        
$sql="select * from gaestebuch where online='0' order by lfd desc";
        
$sql_ergebnis=mysql_query($sql);
        
        while(
$zeile=mysql_fetch_array($sql_ergebnis))
            {
            if (
$zeile["online"]=='0'){$onlinechecked='ist offline';} else {$onlinechecked='ist online';};
            if (
$zeile["online"]=='0'){$onlinesetchecked='&amp;adminaction=setonline';} else {$onlinesetchecked='&amp;adminaction=setoffline';};
            
            echo 
'<table border="1" width="100%">';
            echo 
'<tr bgcolor="#990033">';
            echo 
'    <td>'.$zeile["name"].'&amp;nbsp; schrieb am:&amp;nbsp;'.date("d.m.Y, H:i",$zeile["datum"]).'</td> ';
            echo 
'    <td width="100"> <a href="'.$PHP_SELF.'?action=admin&amp;admin_action=online_loeschen&amp;gb_lfd='.$zeile["lfd"].'"> löschen </a> </td>';
            echo 
'    <td width="100"> <a href="'.$PHP_SELF.'?action=admin&amp;admin_action=online_schalten&amp;gb_lfd='.$zeile["lfd"].'"> online schalten </a> </td>';
            echo 
'    <td width="120">'.$zeile["ip"].' </td>';
            echo 
'</tr>';
            echo 
'<tr bgcolor="#336699">';
            echo 
'    <td colspan=4>'$zeile["text"].'</td>';
            echo 
'</tr>';
            echo 
'</table>';
            }
        }
        
    elseif (
$admin_action=='online_schalten')
        {
        
$sql="update gaestebuch set online='1' where lfd='".$gb_lfd."'";
        
$sql_ergebnis=mysql_query($sql);
        
header("location: $PHP_SELF?action=admin");

        }
    elseif (
$admin_action=='online_loeschen')
        {
        
$sql="delete from gaestebuch where lfd='".$gb_lfd."'";
        
$sql_ergebnis=mysql_query($sql);
        
header("location: $PHP_SELF?action=admin");
        }    
    }
else    
    {
    ECHO 
' Bitte keine Manipulationen';
    }
?>

wo muss ich denn jetzt dies einfügen?
Seitenanfang Seitenende
02.07.2006, 12:12
Member
Avatar Xeper

Beiträge: 5291
#6

Zitat

Hey danke aber da kann ich als Adresse ja nicht z.B. "www.Test.de/index.php?action=admin" schreiben oder?
Doch kannst du.

Dein PHP Code ist leider defekt, nutzt du register_globals? Bitte nicht nutzen!!!
Ansonsten ist dein Code A) nicht portierbar B) enthält eventuelle Sicherheitslücken.

Siehe: http://de.php.net/manual/en/language.variables.predefined.php

Wenn du also per URL etwas übergibst zb. $action dann darfst du das nur per $_GET["action"] ansprechen, ist schon nen wunder das dass überhaupt noch geht - register_globals sollten by default deaktiviert sein.

Den Bereich kannst du schützen in dem du immer eine Passwort Abfrage einrichtest:

if($_GET["action"]=="admin") {
if($_POST["passwd"]==$passwd) {
}
// hier html formular fuer passwort abfrage
}

zb.
Dan brauchst nur noch eine lokale variable $passwd wo dein passwort drinsteht, kannst au alternativ per md5 machen siehe funktion md5()
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
21.07.2006, 15:44
...neu hier

Themenstarter

Beiträge: 4
#7 Hallo kann mir viel jemand zeigen wie ich die in MEINEN Quelltext einfüge...

wär euch seeehr dankbar...


gruß
Kev1990
Seitenanfang Seitenende