Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
"geschütze files" lassen sich direkt über adresszeile öffnen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
"geschütze files" lassen sich direkt über adresszeile öffnen


 
Clubingman
27-03-2004, 20:34 
 
Servus !

wie o.g. lassen sich "geschützte fieles" - mrhappiness tut - bei direkter pfadangabe in der adresszeile öffnen.

Wie kann ich das denn verhindern oder was fehlt noch !?

bilder_login.php


<?
session_start();
include 'sessionhelpers.inc.php';
?>
<html>
<head>
<title>ubilder</title>
<LINK rel="stylesheet" type="text/css" href="../formate.css">
</head>
<body topmargin="5" rightmargin="0" class=bgcolor onLoad="document.login.username.focus()">
<table width="100%" border="0" cellspacing="0" cellpadding="10" class=text>

<?
if (isset($_POST['login'])) //wenn userid erhalten login ok ansonsten false
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo '<EMBED SRC="../sounds/dukommsthiernichtrein.wav" HIDDEN="TRUE" AUTOSTART="true" MASTERSOUND NAME="sound">
<tr>
<td colspan="2">Zugriff hat nur wer registriert ist !</td>
</tr>';
}
if (!logged_in()) //wenn nicht eingeloggt Formular anzeigen ansonsten datei öffnen
echo '<form name="login" method="post" action="bilder_login.php">
<tr >
<th colspan="2" class=ueberschrift><h1>Hier findet ihr mein Fotoalbum</h1><br></th>
</tr>
<tr>
<tr>
<td>Benutzername:</td>
<td width="1000"><input name="username" type="text" size="30"></td>
</tr>
<tr>
<td>Passwort:</td>
<td width="1000"><input name="userpass" type="password" size="30" id"userpass"></td>
</tr>
<tr>
<td>Klick it ->></td>
<td><input name="login" type="submit" id="login" value="Einloggen"></td>
</tr>
</tr>
</form>';
else
include("bilder.php");
echo '<script>parent.frames[2].location.href="leer.htm"</script>';
?>
</table>
</body>
</html>



bilder.php


<?
session_start();
?>
<html>
<head>
<title>Bilder</title>
<LINK rel="stylesheet" type="text/css" href="../formate.css">
<SCRIPT LANGUAGE="JavaScript">
<!--
function ZweiFrames(URL1, FrameNr1,URL2,FrameNr2)
{
parent.frames[FrameNr1].location.href=URL1;
parent.frames[FrameNr2].location.href=URL2;
}
//-->
</SCRIPT>
</head>
<body topmargin="5" rightmargin="0" class=bgcolor>
<EMBED SRC="../sounds/willkommen.wav" HIDDEN="TRUE" AUTOSTART="true" MASTERSOUND NAME="sound2">
<table width="100%" border="0" cellspacing="0" cellpadding="10">
<tr>
<th colspan="2" class=ueberschrift><h1>Hier findet ihr mein Fotoalbum sortiert nach Jahren</h1>
</th>
</tr>
<tr>
<th class=navigation>
<a href="javascript:ZweiFrames('bilder_oben.htm',2,'bilder2003_unten.php',3)">2003</a>
</th>
</tr>
<tr>
<th class=navigation>
<a href="javascript:ZweiFrames('bilder_oben.htm',2,'bilder2004_unten.php',3)">2004</a>
</th>
</tr>
<!--<td>
<a href="logout.php">Ausloggen</a>
</td>-->
</tr>
</table>
</body>
</html>




wer kann helfen ???

 
TobiaZ
27-03-2004, 20:36 
 
und wie hast du die bilder geschützt? :confused:

*verschieb* zu tutorials-

 
Clubingman
27-03-2004, 20:41 
 
OK, das is die nächste frage

formulier's mal anders wie können alle in diesem verzeichnis liegenden files vor direktem zugriff geschützt werden ?

 
TobiaZ
27-03-2004, 20:47 
 
htaccess-schutz

 
Clubingman
27-03-2004, 21:10 
 
und damit lässt sich z.b. bei solchen eingaben in die adresszeile wie
http://www. hompage.de/meinebilder/bilder.php
oder
http://www. hompage.de/meinebilder/bilder/bild.jpg

die jeweilige datei nicht mehr öffnen?

Lässt sich also definitiv nicht mit php schützen ?

- also wieder mal wat neues :rocks:

 
TobiaZ
27-03-2004, 21:29 
 
du kannst ein bild welcher unter

http://www.home page.de/bilder/img992.jpg

ist direkt nicht schützen.

was du machen kannst, ist die bilder in ein verzeichnis laden, auf das normale user kein zugriff haben (z.b. außerhalb webroot oder htaccess). dann musst du das bild über ein file aufrufen. z.b. showbild.php?image=img992.jpg

wie das geht steht im forum.

 
Clubingman
27-03-2004, 21:58 
 
ja schön oder ehr weniger schön

gilt jetzt aber auch für andere files wie eben .php .htm und andere, die hinter dem geschützen bereich liegen oder doch nich !?

*einallerletztesmalnerventut*

 
TobiaZ
27-03-2004, 23:12 
 
auf php-files kannst du wunderbar

if(logged_in())

anwenden.

bei HTML-Dateien müsstest du darauf achten, dass die duch den PHP-Interpreter geparst werden.

 
Clubingman
28-03-2004, 16:05 
 
versteh ich dich richtig, dann muss dieser "login check" auf jeder site stehen um den aufruf der jeweiligen site über die adresszeile zu verhindern !?

kann ich nich ganz nachvollziehn

 
TobiaZ
28-03-2004, 16:12 
 
richtig!

 
Clubingman
28-03-2004, 16:37 
 
hab das mal so eingetragen

bin nicht eingeloggt aber,
datei wird über adresszeile trotzdem geöffnet

wo liegt hier der fehler?

bilder.php

<?
session_start();
include 'sessionhelpers.inc.php';
?>

<html>
<head>
<title>Bilder</title>
<LINK rel="stylesheet" type="text/css" href="../formate.css">
<SCRIPT LANGUAGE="JavaScript">
<!--
function ZweiFrames(URL1, FrameNr1,URL2,FrameNr2)
{
parent.frames[FrameNr1].location.href=URL1;
parent.frames[FrameNr2].location.href=URL2;
}
//-->
</SCRIPT>
</head>
<body topmargin="5" rightmargin="0" class=bgcolor>
<table width="100%" border="0" cellspacing="0" cellpadding="10">

<?
if(logged_in())
echo '<tr>
<th colspan="2" class=ueberschrift><h1>Hier findet ihr mein Fotoalbum sortiert nach Jahren</h1>
</th>
</tr>
<tr>
<th class=navigation>
<a href="javascript:ZweiFrames('bilder_oben.htm',2,'bilder2003_unten.php',3)">2003</a>
</th>
</tr>
<tr>
<th class=navigation>
<a href="javascript:ZweiFrames('bilder_oben.htm',2,'bilder2004_unten.php',3)">2004</a>
</th>
</tr>
<!--<td>
<a href="logout.php">Ausloggen</a>
</td>-->
</tr>';
?>

</table>
</body>
</html>

sessionhelpers.inc.php

<?
function connect() //Verbindung zur DB
{
$con= mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('hp',$con) or die(mysql_error());
}

/* function connect() ------für Internet------
{
$con= mysql_connect('localhost','web811','firsthp') or die(mysql_error());
mysql_select_db('usr_web811_1',$con) or die(mysql_error());
} */


function check_user($name, $pass) //prüft Eingabe
{
$sql="SELECT UserId
FROM users
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
//echo $sql;
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}

function login($userid) //loggt User ein
{
$sql="UPDATE users
SET UserSession='".session_id()."'
WHERE UserId=".$userid;
mysql_query($sql);
}

function logged_in() //prüft ob User eingeloggt ist
{
$sql="SELECT UserId
FROM users
WHERE UserSession='".session_id()."'
LIMIT 1";
$result= mysql_query($sql);
return ( mysql_num_rows($result)==1);
}

function logout() //loggt User aus u. setzt session auf Null
{
$sql="UPDATE users
SET UserSession=NULL
WHERE UserSession='".session_id()."'";
mysql_query($sql);
}

connect();
?>

 
Clubingman
29-03-2004, 00:10 
 
so, habe jetzt folgendes ausprobiert

in bilder.php

am anfang:

<?
session_start();
include 'sessionhelpers.inc.php';
?>

nach <table>

<?
if (!logged_in())
include ("logged_in.php")
?>

und dann geht's weiter mit <tr> ...

bei direkten zugriff über adressleiste oder auch nach login kommt folgende fehlermeldung:

Fatal error: Cannot redeclare connect() in g:\homepage\test\sessionhelpers.inc.php on line 2

bin wieder für jeden hinweis dankbar !!!

 
TobiaZ
29-03-2004, 14:51 
 
such mal nach cannot redeclare (oder übersetz einfach) ;)

 
Clubingman
29-03-2004, 19:36 
 
hab's gefunden. datei zu oft mit include eingebunden.

andere frage:

kann mit dem befehl "die" auch eine datei aufgerufen werden.
In der referenz, dich ich hab, steht nur was von einer einfachen textausgabe wie z.b. die ("blabla");
meine versuche gingen daneben

 
TobiaZ
29-03-2004, 19:42 
 
wenn deine referenz das manual ist (wie es sein solle), dann wird wohl stimmen, was da steht.

 
Clubingman
30-03-2004, 00:13 
 
funzt jetzt auch erst include u. dann die

will jetzt so n autom. logout nach n paar minuten.
soweit klar

in der sessionhelpers.inc.php

function login($userid, $action) //loggt User ein
{

$sql="UPDATE users
SET UserSession='".session_id()."' and lastaction=NOW(...) <--- wie sieht denn da die Syntax aus?
WHERE UserId=".$userid;
mysql_query($sql);
}


soll also beim login in die spalte lastaction der aktuelle timestamp gesetzt werden.

zu der syntax hab ich leider noch nich allzuviel gefunden

 
TobiaZ
30-03-2004, 13:07 
 
nimm , statt and...

oder guck einfach mal ins Manual!


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:45 Uhr.