Hoi daar opnieuw,

Ik moet voor school met een groepswerk een project maken. Daarvoor heb ik een klein siteje gemaakt waar we onze files kunnen uploaden etc.

Ik beveilig ze met cookies. Ik weet ondertussen ook dat dat niet echt veilig is, maar het is nog altijd mijn eerste inlogsysteempje.
Ik had Jan K. zijn tutorial over sessions zien staan en heb dat proberen toe te passen op die site. Alles werkte, totdat ik op de upload pagina zelf kwam.

Ik post even de code hieronder. Kan iemand me eevn zeggen waar het fout gaat?

MET COOKIES

<html>
<head>
<title>File Management</title>
<link href="includes/stylesheet.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="content">


<?
include ('includes/config.php');
if((isset($_COOKIE['ProjectUsername'])) && ($_COOKIE['ProjectRank'] >= 2)){
echo '<table width="100%" height="100%" cellpadding="5" cellspacing="0">';
echo '<tr>';
echo '<td width="70%" height="100%" valign="top">';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
global $_FILES;

$filename = $_FILES['userfile']['name'];

$allow[0] = "jpg";
$allow[1] = "gif";
$allow[2] = "bmp";
$allow[3] = "doc";
$allow[4] = "txt";
$allow[5] = "xls";
$allow[6] = "wmv";
$allow[7] = "avi";
$allow[8] = "rar";

if ($_POST["newname"])
    $uploadname = $_POST['newname'];
else
    $uploadname = $_FILES['userfile']['name'];

$extentie = substr($uploadname, -3);

for ($i = 0; $i < count($allow); $i++)
{
    if ($extentie == $allow[$i])
    {
        $extentie_check = "ok";
        $i = count($allow) + 5; // om loop te beindigen
    }
}

if ($extentie_check)
{
    if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
        move_uploaded_file($_FILES['userfile']['tmp_name'], "files/" . $uploadname);

        echo "Het bestand is geupload onder de naam: $uploadname";
        echo '<br>De map van bestanden is <a href="files"><b><u>hier</u></b></a> te vinden.';
        $datum = date("Y-m-d");
        mysql_query("INSERT INTO projectbestanden (id, uploadname, datum) VALUES ('', '$uploadname', '$datum')") or die(mysql_error());
    }
}
else
{
    echo "Error: De extentie van het bestand is niet toegelaten!";
}
}else{
  echo '
   <p>Je kunt de <b>naam om up te loaden leeg laten</b>. <br>
   Dan wordt de naam zoals het bestand om het moment zelf heet.</p><br>
   De toegelaten extenties zijn: jpg, gif, bmp, doc, txt, xls, wmv, avi.<br>
   <form enctype="multipart/form-data" action="uploads.php" method="post">
   <p>
   <input type="hidden" name="MAX_FILE_SIZE" value="51200" />
   Selecteer een bestand: <input name="userfile" type="file"><br />
   Naam om up te loaden: <input name="newname" type="text"><br />
   <input type="submit" value="Upload" />
   </p>
   </form>
   <br><br>';
  echo '</div>';
}
echo '</td>';
echo '<td width="30%" height="100%" valign="top">';
echo '<div id="divtasks">';
include ('tasks.php');
echo '</div>';
echo '<div id="divlinks">';
include ('links.php');
echo '</div>';
echo '</td>';
echo '</tr>';
echo '</table>';
}else{
  echo '<div id="contentout" align="center"><br><br><br><br><br><br><br><br>';
  echo 'ACCESS DENIED!<br>';
  echo '<a href="login.php">Please Login!</a><br><br>';
  echo 'Authentication Required!<br><img src="images/print.png" border="0">';
  echo '</div>';
}
?>

</body>
</div>
</body>
</html>



MET SESSIES

<?
require ('includes/auth.php');
?>
<html>
<head>
<title>File Management</title>
<link href="includes/stylesheet.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="content">


<?
echo '<table width="100%" height="100%" cellpadding="5" cellspacing="0">';
echo '<tr>';
echo '<td width="70%" height="100%" valign="top">';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
global $_FILES;

$filename = $_FILES['userfile']['name'];

$allow[0] = "jpg";
$allow[1] = "gif";
$allow[2] = "bmp";
$allow[3] = "doc";
$allow[4] = "txt";
$allow[5] = "xls";
$allow[6] = "wmv";
$allow[7] = "avi";
$allow[8] = "rar";

if ($_POST["newname"])
    $uploadname = $_POST['newname'];
else
    $uploadname = $_FILES['userfile']['name'];

$extentie = substr($uploadname, -3);

for ($i = 0; $i < count($allow); $i++)
{
    if ($extentie == $allow[$i])
    {
        $extentie_check = "ok";
        $i = count($allow) + 5; // om loop te beindigen
    }
}

if ($extentie_check)
{
    if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
        move_uploaded_file($_FILES['userfile']['tmp_name'], "files/" . $uploadname);

        echo "Het bestand is geupload onder de naam: $uploadname";
        echo '<br>De map van bestanden is <a href="files"><b><u>hier</u></b></a> te vinden.';
        $datum = date("Y-m-d");
        mysql_query("INSERT INTO projectbestanden (id, uploadname, datum) VALUES ('', '$uploadname', '$datum')") or die(mysql_error());
    }
}
else
{
    echo "Error: De extentie van het bestand is niet toegelaten!";
}
}else{
  echo '
   <p>Je kunt de <b>naam om up te loaden leeg laten</b>. <br>
   Dan wordt de naam zoals het bestand om het moment zelf heet.</p><br>
   De toegelaten extenties zijn: jpg, gif, bmp, doc, txt, xls, wmv, avi.<br>
   <form enctype="multipart/form-data" action="uploads.php" method="post">
   <p>
   <input type="hidden" name="MAX_FILE_SIZE" value="51200" />
   Selecteer een bestand: <input name="userfile" type="file"><br />
   Naam om up te loaden: <input name="newname" type="text"><br />
   <input type="submit" value="Upload" />
   </p>
   </form>
   <br><br>';
  echo '</div>';
}
echo '</td>';
echo '<td width="30%" height="100%" valign="top">';
echo '<div id="divtasks">';
include ('tasks.php');
echo '</div>';
echo '<div id="divlinks">';
include ('links.php');
echo '</div>';
echo '</td>';
echo '</tr>';
echo '</table>';
?>

</body>
</div>
</body>
</html>


Mvg Jens
Het bestand is geupload.

Wat hij weergaf is dit:
Array
(
[userfile] => Array
(
[name] => Blackjck.xls
[type] => application/vnd.ms-excel
[tmp_name] => /tmp/phpnAPIdn
[error] => 0
[size] => 17920
)

)


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/denreyt/domains/vandenreyt.be/public_html/project/uploads.php:3) in /home/denreyt/domains/vandenreyt.be/public_html/project/includes/auth.php on line 2

Die warning is omdat ik dat stukje wat jij zei voor die require had gedaan (en daar staat een header is)

Jens

Merci ;-)
even een vraagje, moet dat stukje code nu blijven staan?
Maar dan gaat het uploaden toch prima? Je krijgt een error 0 en dat betekent: geen errors. Heeft de map waarnaar je het bestand verplaatst wel de goede rechten? Kijk eens met je FTP programma?
Zet die code een NA de require.
Jens schreef op 06.01.2007 13:16
even een vraagje, moet dat stukje code nu blijven staan?

Nee die mag weg.
ik snap gewoon niet waarom het nu wel werkt, en gisteren niet... Ik had gekeken en had de map zelfs 7777 gechmod.. Toen werkte het nog niet. Hij gaf toen niet eens een error. Gewoon een grijze pagina
Chmod 7777 slaat nergens op doe dan 0777
jaja, dat is het ondertussen terug ;-)
Maar, ik begrijp dat alles nu toch werkt. Vreemd maar okee.
Ik denk juist hetzelfde ;)

Reageren