Zur Navigation

PHP-Upload [6]

51 Jörg Kruse

P.S. Und wenn ich es mit dem Header probiere wie von dir vorgeschlagen (was macht eigentlich das die() ?) , dann krieg ich die Warnung: Cannot modify header information in security.php - header already sent by output startet at holmitschutz.php

Dann wurde vor dem header() schon etwas ausgegeben. Die Funktion muss vor der ersten Ausgabe (mit echo, print oder außerhalb von <?php ?>) erfolgen, oder die Ausgabe muss wie von Rudy beschreieben gepuffert werden. Das die() sorgt dafür, dass das Script nach der Weiterleitung beendet wird

14.01.2007 12:34

52 lava

Rudys Vorschlag, alles in einer Datei zu machen, klingt ja ganz logisch. Trotzdem würde ich gerne wissen, was an meinem Java-Scriptvorschlag (mit mehreren include-Dateien für die versch. Funkitionen) verkehrt war.... könnte mir darauf bitte noch jemand antworten?

21.01.2007 10:14

53 Jörg Kruse

Trotzdem würde ich gerne wissen, was an meinem Java-Scriptvorschlag (mit mehreren include-Dateien für die versch. Funkitionen) verkehrt war

Der Thread ist schon etwas länger, auf welchen Beitrag beziehst du dich genau?

21.01.2007 12:42

54 lava

Auf den Beitrag vom 14.01.2007 02:14

Rudy hat mir daraufhin ja eine sinnvolle Lösung gepostet, wie man meine Ideen alle in einer einzigen Datei unterbringen kann, ohne daß sich security und holmitschutz gegenseitig mit query-string-Übergabe aufrufen müssen. Aber das geht ja nur deshalb so gut, weil die Dateien noch so klein sind. Wenn ich jetzt fitter im Programmieren wäre, hätte es auch mehr Code gegeben. Und deswegen will ich halt nicht nur eine mögliche Variante (die von Rudy) wissen, wie es geht, sondern hätte gern auch eine Antwort, wo nun eigentlich mein Denkfehler war (oder war es wieder nur ein Syntaxfehler? oder Vermischung von Sprachen/falsche Befehlsbezeichnung o.ä. ?)

24.01.2007 23:09

55 Jörg Kruse

Die URLs müssen in Anführungszeichen gesetzt werden

  function neuerversuch()
{alert("no");
window.location.href = 'holmitschutz.php?a=1';} 

  function erfolgreich()
{alert("yes");
window.location.href = 'holedatei.php' ; }

Ebenso Username und Passwort:

if ($_REQUEST["usereingabe"] == 'XXX' && $_REQUEST["passwordeingabe"]== 'YYY')

Und du solltest nicht eine komplette HTML-DAtei includen, da die Gesamtdatei andernfalls über zwei heads, bodies etc. verfügt

Nachtrag:

Ich würde das Script in dem derzeitigen Zustand übrigens nicht verwenden, da die Ziel-URL aus dem Quelltext aus der Funktion erfolgreich() auslesbar ist - ein Angreifer kann den Passwortschutz so relativ leicht umgehen! Zumindest solltest du die Funktionsdefinitionen im head entfernen und die Primär-Funktionen stattdessen direkt in das if - elseif Konstrukt einbauen:

<?PHP
if ($_REQUEST["usereingabe"] == 'XXX' && $_REQUEST["passwordeingabe"]== 'YYY') {$_SESSION["eingeloggt"]=1; $_SESSION["sessionuser"] = $_REQUEST["usereingabe"]; $_SESSION["sessionpassword"] = $_REQUEST["passwordeingabe"] ;
 ?><script language="javascript" type="text/javascript">alert("yes");
window.location.href = 'holedatei.php' ;</script><?PHP
}
elseif (! empty($_REQUEST["usereingabe"]))
{?><script language="javascript" type="text/javascript">alert("no");
window.location.href = 'holmitschutz.php?a=1';</script><?PHP
} ?>

Oder noch besser, du verwendest eine serverseitige Weiterleitung, die über die Funktion header() ausgegeben wird.

Diese Lösung mit der WEiterleitung ist allerdings auch dann nur solange sicher wie die ungeschützte Datei holedatei.php nicht bekannt ist. Rudys Rundum-Lösung wäre von daher noch vorzuziehen

25.01.2007 01:13 | geändert: 25.01.2007 01:47

56 tobi

ich kram den thread mal wieder raus: ich wollt folgendes testen:

<?php
session_start();
?>
<html>
<head>
<title>Upload</title>
</head>
<body>
<?php
$key = 0;
if ($_POST["username"] == "Test" AND $_POST["password"] == "Test") {
    $key = 1;
    $_SESSION["username"] = $_POST["username"];
    $_SESSION["password"] = $_POST["password"];
}
if ($_SESSION["username"] == "Username" AND $_SESSION["password"] == "Passwort")
    $key = 1;
if ($key == 1) {
    echo "<p><b>".$_SESSION["username"]."</b>, erfolgreich eingeloggt!</p>";
    if ($_FILES["file"]["name"]) {
         if ($_FILES["file"]["size"] > 512001)
             echo "<p><font color=\"red\">Die Datei darf maximal 500 KB gro&szlig; sein.</font></p>";
         else {
             copy($_FILES["file"]["tmp_name"], "./Test/".$_FILES["file"]["name"]."");
             echo "<p><font color=\"green\">Die Datei wurde erfolgreich hochgeladen.</font></p>";
         }
    }
    echo "<form action=\"upload.php\" enctype=\"multipart/form-data\" method=\"post\">";
    echo "<table>";
    echo "<tr>";
    echo "<td width=\"50\"><b>Datei</b>:</td><td><input type=\"file\" name=\"file\"></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td></td><td><input type=\"submit\" value=\"Hochladen\"></td>";
    echo "</tr>";
    echo "</table>";
    echo "</form>";
} else {
    echo "<form action=\"upload.php\" method=\"post\">";
    echo "<table>";
    echo "<tr>";
    echo "<td width=\"80\"><b>Username</b>:</td><td><input type=\"text\" name=\"username\" value=\"".$_POST["username"]."\" size=\"25\"></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td><b>Passwort</b>:</td><td><input type=\"password\" name=\"password\" size=\"25\"></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td></td><td><input type=\"submit\" value=\"Login\"></td>";
    echo "</tr>";
    echo "</table>";
    echo "</form>";
}
?>
</body>
</html>

so ich hab Username und Passwort festgelegt ( Test und Test ), nur zum ausprobieren.
der login klappt wunderbar.
dann hab ich festgelegt dass die datei in den ordner Test soll, den ich aufm server angelegt habe.
wenn ich jetzt eine datei auswähle und hochlade, dann erscheint die datei nicht im ordner und es kommt auch keine meldung wie erfolgreich hochgeladen oder so.
woran liegt dies?

03.04.2009 11:48

57 Jörg Kruse

so ich hab Username und Passwort festgelegt ( Test und Test )

Ja, aber nur in der ersten Bedingung - in der zweiten wird auf einen anderen Namen / Passwort geprüft:

if ($_SESSION["username"] == "Username" AND $_SESSION["password"] == "Passwort")

03.04.2009 14:29

58 tobi

stimmt - man sollte genau lesen udn alles ändern!

hat geklappt - danke

03.04.2009 15:05

59 tobi

kann ich dass irgendwie verbinden??

ich möchte ein formular, in welches ich ein datum eingebe, eine veranstaltung, eine webseite und eine ausschreibung.
die ausschreibung ist allerdings eine datei, welche erst hochgeladen werden muß bzw mit abschicken des formulars hochgeladen werden soll

<?php
session_start();
?>
<html>
<head>
<title>Upload</title>
</head>
<body>
<?php
$key = 0;
if ($_POST["username"] == "Test" AND $_POST["password"] == "Test") {
    $key = 1;
    $_SESSION["username"] = $_POST["username"];
    $_SESSION["password"] = $_POST["password"];
}
if ($_SESSION["username"] == "Test" AND $_SESSION["password"] == "Test")
    $key = 1;
if ($key == 1) {
    echo "<p><b>".$_SESSION["username"]."</b>, erfolgreich eingeloggt!</p>";
    if ($_FILES["file"]["name"]) {
         if ($_FILES["file"]["size"] > 5120010)
             echo "<p><font color=\"red\">Die Datei darf maximal 5mb gro&szlig; sein.</font></p>";
         else {
             copy($_FILES["file"]["tmp_name"], "./Test/".$_FILES["file"]["name"]."");
             echo "<p><font color=\"green\">Die Datei wurde erfolgreich hochgeladen.</font></p>";
         }
    }
    echo "<form action=\"upload.php\" enctype=\"multipart/form-data\" method=\"post\">";
    echo "<table>";
    echo "<tr>";
    echo "<td width=\"50\"><b>Datei</b>:</td><td><input type=\"file\" name=\"file\"></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td></td><td><input type=\"submit\" value=\"Hochladen\"></td>";
    echo "</tr>";
    echo "</table>";
    echo "</form>";
} else {
    echo "<form action=\"upload.php\" method=\"post\">";
    echo "<table>";
    echo "<tr>";
    echo "<td width=\"80\"><b>Username</b>:</td><td><input type=\"text\" name=\"username\" value=\"".$_POST["username"]."\" size=\"25\"></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td><b>Passwort</b>:</td><td><input type=\"password\" name=\"password\" size=\"25\"></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td></td><td><input type=\"submit\" value=\"Login\"></td>";
    echo "</tr>";
    echo "</table>";
    echo "</form>";
}
?>
</body>
</html>

<?php
session_start();
include "inc/kopf.php.inc";
include "inc/menu.php.inc";

//Datenbank verbinden
include "../zugang.php.inc";

                        $datum="";
                        $veranstaltung="";
                        $ausschreibung="";
                        $webseite="";
                        $meldung="";


if(isset($_POST['sicherheitscode']))
{
    $code=$_POST['sicherheitscode'];
    $datum=mysql_real_escape_string($_POST['datum']);
    $veranstaltung=mysql_real_escape_string($_POST['veranstaltung']);
    $ausschreibung=mysql_real_escape_string($_POST['ausschreibung']);
    $webseite=mysql_real_escape_string($_POST['webseite']);

    $meldung = "";

if(empty($_SESSION['captcha_spam'] ) || $code != $_SESSION['captcha_spam'])
   $meldung .= "<rot><b>Sicherheitscode falsch eingegeben!</b></rot><br>";
if(empty($datum))
   $meldung .= "<rot><b>Bitte Tag des Turniers eingeben!</b></rot><br>";
if(empty($veranstaltung))
   $meldung .= "<rot><b>Bitte Turniername eingeben!</b></rot><br>";
if(empty($ausschreibung))
   $meldung .= "<rot><b>Bitte Ausschreibung hochladen (nur Word oder PDF)!</b></rot><br>";
if(empty($webseite))
   $meldung .= "<rot><b>Bitte Webseite eingeben!</b></rot><br>";

if(empty($meldung))

{
         $meldung="<p><rot><b>Turnier erfolgreich eingetragen!</b></rot></p>\n";


mysql_query("INSERT INTO turnierkalender
(datum, veranstaltung, ausschreibung, webseite)
VALUES
('$datum', '$veranstaltung', '$ausschreibung', '$webseite')")
or die(mysql_error());

}
}

mysql_close($link);


                echo "<div id=\"box1\">\n";
                echo "<p><b><font size=\"+2\">Turniere eintragen</font></b></p>\n";
                if ($meldung != "") {echo $meldung;}
                echo "<center>\n";
                echo "<form name=\"anmeldungform\" action=\"turniere_eintragen.php\" method=\"POST\">\n";
                echo "<table width=\"10\">\n";
                echo "<tr>\n";
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "<tr>\n";
                echo "<td align=\"left\">Datum des Turniers:</td><td align=\"left\"><input name=\"datum\" type=\"text\" id=\"name\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$datum."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Turniername:</td><td align=\"left\"><input name=\"veranstaltung\" type=\"text\" id=\"vorname\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$veranstaltung."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Ausschreibung:</td><td align=\"left\"><input name=\"ausschreibung\" type=\"text\" id=\"verein\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$ausschreibung."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Webseite:</td><td align=\"left\"><input name=\"webseite\" type=\"text\" id=\"spielklasse\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$webseite."\"";
                echo "></td>\n";
                echo "</tr>\n";

//eingefügt aus www.stoppt-den-spam.info
                echo "<tr>\n";
                echo "<td align=\"left\"><img src=\"captcha/captcha.php\" border=\"0\" title=\"Sicherheitscode\"></td>\n";
                echo "<td align=\"right\">Sicherheitscode vom Bild: <input type=\"text\" name=\"sicherheitscode\" size=\"5\"></td>\n";
                echo "</tr>\n";
//hier ende des einfügens
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "</table>\n";
                echo "<input name=\"formposten\" type=\"submit\" value=\"Abschicken\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"></center><br>\n";
                echo "</form>\n";
                echo "</center>\n";
                include "aktualisierung.php";
                echo "</div>\n";

include "inc/ende.php.inc";
?>

03.04.2009 16:35

60 Jörg Kruse

In einem Schritt lässt sich das meines Wissens nicht kombinieren.

04.04.2009 15:14