file_get_contents bei $_COOKIE geschützten Seiten

hallo zusammen,

ich habe 2 seiten.

  1. meine-webseite.php
<?php if($_COOKIE["cookie1"] == $benutzer.$pass OR isset($_COOKIE['cookie2']))
{ //echo("true"); //echo $\_COOKIE['cookie2']; } else{ header("Location: index.php" ); } ?\>[druck](druck.php) 2.druck.php $contents = file\_get\_contents($\_SERVER['HTTP\_REFERER'],"r") ; echo $contents; wenn ich die druck.php aufrufe wird auf die index.php umgeleitet, obwohl das $\_COOKIE vorhanden ist und auch ausgelesen werden kann. kommentiere ich header aus, funktionierts. hat jemand einen lösungsvorschlag? danke im voraus

hallo zusammen,

ich habe 2 seiten.

  1. meine-webseite.php
<?php :if($_COOKIE["cookie1"] == $benutzer.$pass OR
isset($\_COOKIE['cookie2'])) { //echo("true"); //echo $\_COOKIE['cookie2']; } else{ header("Location: index.php" ); } ?\> [druck](druck.php) 2.druck.php $contents = file\_get\_contents($\_SERVER['HTTP\_REFERER'],"r") ; echo $contents; wenn ich die druck.php aufrufe wird auf die index.php umgeleitet, obwohl das $\_COOKIE vorhanden ist und auch ausgelesen werden kann. kommentiere ich header aus, funktionierts.

nach dem obigen code wird in der druck niemals umgeleitet udn auch kein cookie abgefragt. oder was meinst du?
im uebrigen: nach header-location muss immer ein exit() folgen - danach darf naemlich nix mehr kommen.
der referer ist faelschbar - damit kann ich deinen server veranlassen eine beliebige seite fuer mich abzuholen.

deine cookie-bedingung sieht ein bisschen schlecht aus:
isset($_COOKIE[‚cookie2‘])) zieht auch, wenn ich den aufruf faelsche und per se ein „cooki2: BYPASS“ sende - dann brauche ich nie benutzer+pass
$_COOKIE[„cookie1“] == $benutzer.$pass sieht zumindest spookie aus. ich weiss nciht, ob man benutzer+pass im cookie hinundherschicken sollte, bzw. wo $benutzer und $pass herkommen - und welche vektoren sich daraus ergeben.

mit exit() werd ich gleich überall machen.

ich hab mit print_r ($_SERVER) mir alle übergebenen werte auf der druck.php anzeigen lassen. dort ist also auch das $_COOKIE vorhanden.

der referer wird vorher durch eine include funktion abgefragt und überprüft.

ist der referer == $_SERVER[HTTP_REFERER] gehts weiter zu

$contents = file_get_contents($_SERVER[‚HTTP_REFERER‘],„r“) ;

echo $contents;

jedoch dort wird es nicht auslesen sondern liest die index.php aus.

ist der referer == $_SERVER[HTTP_REFERER] gehts weiter zu

ich wage nicht mir auszumalen, was du damit meinst - etwas in der art wie 1==1?

$contents = file_get_contents($_SERVER[‚HTTP_REFERER‘],„r“) ;

echo $contents;

jedoch dort wird es nicht auslesen sondern liest die index.php
aus.

irgendwie logisch, oder? schliesslich sendet file_get_contents keine cookies…

hmmm im php_manual steht davon nichts mit den cookies. so wie es aussieht muss ich wohl die seite vorher anders auslesen und mit post(formular) mit übergeben. oder gibts da noch ne andere möglichkeit?

habe an sessions gedacht doch auch da wird das selbe problem sein. und beim näheren nachlesen fiel mir auf das es file_get_contents erst ab php 5.0 möglich ist. also für meine zwecke eher unnütz.

also weitergrübeln.

danke trotzdem für deine mühe…

mario

probier doch mal bitte beim naechsten posten die sache mti dem zitieren - ist ganz leicht, und alle koennen die beitraege nachvollziehen.

hmmm im php_manual steht davon nichts mit den cookies. so wie
es aussieht muss ich wohl die seite vorher anders auslesen und
mit post(formular) mit übergeben. oder gibts da noch ne andere
möglichkeit?

dazu muesste man das konstrukt kennen
sinnvoller waere es aber prinzipiell der website.php zu sagen: „du bist jetzt drucken“ (mit einem entspr. parameter.)

habe an sessions gedacht doch auch da wird das selbe problem
sein.

nicht unbedingt, weil du ja dann die athentifizierung mitgeben kannst z.b. ueber:
file_get_contents(„url?“.session_name()."=".session_id())

und beim näheren nachlesen fiel mir auf das es
file_get_contents erst ab php 5.0 möglich ist.

ähm nein, wieso?
http://de2.php.net/file_get_contents

file_get_contents
(PHP 4 >= 4.3.0, PHP 5)
file_get_contents — Liest die gesamte Datei in einen String

habe an sessions gedacht doch auch da wird das selbe problem
sein.

nicht unbedingt, weil du ja dann die athentifizierung mitgeben
kannst z.b. ueber:
file_get_contents(„url?“.session_name()."=".session_id())

klasse das klappt. hab es so gestaltet:

webseite.php

//Aufruf der Include Dateien
include(„includes/funktionen.php“);

session_start();
$_SESSION[s\_id]=session_id();

if($_SESSION[s\_id]!=session_id())
{
session_destroy();
header(„Location: index.php“ );
exit();
}

$_SESSION[‚benutzer‘]= $_POST[‚benutzer‘];
$_SESSION[‚passwort‘]= $_POST[‚passwort‘];

$ID=$SESSION[s\_id];

//Benutzer oder Kunde wird in includes/funktionen.php überprüft
if($_COOKIE[„benutzer“] == $_SESSION[‚benutzer‘].$_SESSION[‚passwort‘] OR isset($_COOKIE[‚kund‘]))
{
//echo(„true“);
}
else{
header(„Location: index.php“ );
exit();
}

/* Hier ist der HTML-CODE */

session_destroy;


druck.php

$contents = file_get_contents(„url?“.session_name()."=".session_id())

$meinString = $contents;

//gesuchte Tabelle
$findMich1 = „“;
$findMich2 = „“;

$pos1 = stristr($meinString, $findMich1);

if ($pos1 !== false) {
$pos2 = stristr($pos1, $findMich2);

if ($pos2 !== false) {
$rest = str_replace($pos2, „“, $pos1);

// Gibt nun den Rest der Homepage aus
echo $rest;

und beim näheren nachlesen fiel mir auf das es
file_get_contents erst ab php 5.0 möglich ist.

ähm nein, wieso?
http://de2.php.net/file_get_contents

file_get_contents
(PHP 4 >= 4.3.0, PHP 5)
file_get_contents — Liest die gesamte Datei in einen String

habe was falsch verstanden weil dort stand:
Anmerkung: Die Kontext-Unterstützung wurde in PHP 5.0.0 eingeführt.

super hast mir sehr geholfen. danke