webForumDet fria alternativet

PHP stul - vill inte funka - vad är felet ?

PHP

8 svar · 666 visningar · startad av Lindström

Medlem sedan jan. 2003821 inlägg
Frågan#1

Är inte så haj...eller om jag ska vara ärlig så det jag kan inom PHP o ASP är väl "klippa o klistra", typ.

Men saken är den att jag har försökt att lägga upp ett PHP script som ska ge mig den föremånen att besökare ska kunna lägga upp bildobjekt på en websida.

Men saken är den att jag får upp följande fel:
............................................

CGI-fel
CGI-tillämpningen returnerade inte korrekta HTTP-huvuden. Huvudena var:

............................................

Så vad kan felet ligga ? Själva scriptet är i två delar.

- upload.php
- config.php

Upload scriptet ser ut som följer:

**<?
//Advanced Uploader V1.00b
//Copyright 2002 ZachWhite.com
//By using this program you agree with the license provide with it.
//Script by Zach White http://www.zachwhite.com zachwhite@zachwhite.com

$absolute_path = "lindstrom/"; //Absolute path to where files are uploaded
$size_limit = "yes"; //do you want a size limit yes or no.
$limit_size = "50000"; //How big do you want size limit to be in bytes
$limit_ext = "yes"; //do you want to limit the extensions of files uploaded
$ext_count = "4"; //total number of extensions in array below
$extensions = array(".gif", ".jpg", ".doc", ".png"); //List extensions you want files uploaded to be
?
>**

Har det något med;

$absolute_path = "lindstrom/"; //Absolute path to where files are uploaded

att göra ? Att jag har klottrar in fel path , eller ??

Domän adressen som sidan ska ligga på , tillsvidare, är:
http://gardell.homeip.net/lindstrom/

Så är det någon som har tid och den vänliga själen att kunna hjälpa mig ?

Problem sida:
http://gardell.homeip.net/lindstrom/upload.php

Medlem sedan aug. 20002 975 inlägg
#2

Nu vet jag inte hur din kod ser ut, men en absolutsökväg utgår vanligtvis från diskroten (möjligtvis från webroten).

Sedan behöver du en katalog att ladda upp dina filer i. Denna katalog måste ha skrivrättigheter.
Du kan t.ex skapa katalogen upload under lindstrom.

Då skulle det kunna se ut så här:

$absolute_path = $_SERVER['DOCUMENT_ROOT']."/lindstrom/upload/"; //Absolute path to where files are uploaded
Medlem sedan jan. 2003821 inlägg
#3

Matte skrev:

Nu vet jag inte hur din kod ser ut, men en absolutsökväg utgår vanligtvis från diskroten (möjligtvis från webroten).

Sedan behöver du en katalog att ladda upp dina filer i. Denna katalog måste ha skrivrättigheter.
Du kan t.ex skapa katalogen upload under lindstrom.

Då skulle det kunna se ut så här:

$absolute_path = $_SERVER['DOCUMENT_ROOT']."/lindstrom/upload/"; //Absolute path to where files are uploaded

Får då upp:
Notice: Undefined index: DOCUMENT_ROOT in C:\UserLib\lindstrom\config.php on line 7

Jag bifogar hela koden:

<?
//Advanced Uploader V1.00b
//Copyright 2002 ZachWhite.com
//By using this program you agree with the license provide with it.
//Script by Zach White http://www.zachwhite.com zachwhite@zachwhite.com
if(!isset($upload)) {
$upload = "";
}
switch($upload) {
default:
include "config.php";
echo "
<html>

<head>
<title>Upload</title>
</head>

<body topmargin=\"10\" leftmargin=\"0\" bgcolor=\"#18576F\" link=\"#818EA0\" vlink=\"#5C697A\" alink=\"#818EA0\" text=\"#FFFFFF\" style=\"font-family: Verdana; font-size: 8pt; color: #FFFFFF\">

<div align=\"center\">
<center>
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"400\" id=\"AutoNumber1\">
<tr>
<td bgcolor=\"#5E6A7B\" height=\"25\">
<p align=\"center\"><font size=\"2\"><b>Upload File</b></font></td>
</tr>
<tr>
<td bgcolor=\"#818EA0\"><font size=\"2\">The following restrictions apply:</font><ul type=\"square\">
<li><font size=\"2\">File extension must be <b>";
if (($extensions == "") or ($extensions == " ") or ($ext_count == "0") or ($ext_count == "") or ($limit_ext != "yes") or ($limit_ext == "")) {
echo "any extension";
} else {
$ext_count2 = $ext_count+1;
for($counter=0; $counter<$ext_count; $counter++) {
echo "  $extensions[$counter]";
}
}
if (($limit_size == "") or ($size_limit != "yes")) {
$limit_size = "any size";
} else {
$limit_size .= " bytes";
}
echo"</b></font></li>
<li><font size=\"2\">Maximum file size is $limit_size</font></li>
<li><font size=\"2\">No spaces in the filename</font></li>
<li><font size=\"2\">Filename cannot contain illegal characters
(/,*,\,etc)</font><BR>
</li>
</ul>
<form method=\"POST\" action=\"index.php?upload=doupload\" enctype=\"multipart/form-data\">
<p align=\"center\">
<input type=file name=file size=30 style=\"font-family: v; font-size: 10pt; color: #5E6A7B; border: 1px solid #5E6A7B; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1\"><br>
<br>
<button name=\"submit\" type=\"submit\" style=\"font-family: v; font-size: 10pt; color: #5E6A7B; border: 1px solid #5E6A7B; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1\">Upload</button>
</p>
</form>
<p>
</td>
</tr>
<tr>
<td bgcolor=\"#5E6A7B\" height=\"25\">
<p align=\"center\"><font size=\"1\">
<a href=\"http://www.zachwhite.com/index.php\\"><font color=\"#FFFFFF\">
ZachWhite.com File Uploader</font></a></font><br>
<font size=\"1\">Template By <a href=\"http://www.peekj.ca\">
<font color=\"#FFFFFF\">Jan Ole Peek</font></a></font></td>
</tr>
</table>
</center>
</div>

</body>

</html>";
break;
case "doupload":
include "config.php";
$endresult = "<font size=\"2\">File Was Uploaded</font>";
if ($file_name == "") {
$endresult = "<font size=\"2\">No file selected</font>";
}else{
if(file_exists("$absolute_path/$file_name")) {
$endresult = "<font size=\"2\">File Already Existed</font>";
} else {
if (($size_limit == "yes") && ($limit_size < $file_size)) {
$endresult = "<font size=\"2\">File was to big</font>";
} else {
$ext = strrchr($file_name,'.');
if (($limit_ext == "yes") && (!in_array($ext,$extensions))) {
$endresult = "<font size=\"2\">File is wrong type</font>";
}else{
@copy($file, "$absolute_path/$file_name") or $endresult = "<font size=\"2\">Couldn't Copy File To Server</font>";
}
}
}
}
echo "
<html>

<head>
<title>Upload</title>
</head>

<body topmargin=\"10\" leftmargin=\"0\" bgcolor=\"#18576F\" link=\"#818EA0\" vlink=\"#5C697A\" alink=\"#818EA0\" text=\"#FFFFFF\" style=\"font-family: Verdana; font-size: 8pt; color: #FFFFFF\">

<div align=\"center\">
<center>
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"400\" id=\"AutoNumber1\">
<tr>
<td bgcolor=\"#5E6A7B\" height=\"25\">
<p align=\"center\"><font size=\"2\"><b>Upload File</b></font></td>
</tr>
<tr>
<td bgcolor=\"#818EA0\">
<center> $endresult </center>
</td>
</tr>
<tr>
<td bgcolor=\"#5E6A7B\" height=\"25\">
<p align=\"center\"><font size=\"1\">
<a href=\"http://www.zachwhite.com/index.php\\"><font color=\"#FFFFFF\">
ZachWhite.com File Uploader</font></a></font><br>
<font size=\"1\">Template By <a href=\"http://www.peekj.ca\">
<font color=\"#FFFFFF\">Jan Ole Peek</font></a></font></td>
</tr>
</table>
</center>
</div>

</body>

</html>";
break;
}
?>

Medlem sedan aug. 20002 975 inlägg
#4

Vilken PHP-version kör du ?
Vilken inställning har du för register_globals ?

Om du inte vet det kan du skapa en fil med följande innehåll:

<?php phpinfo(); ?>

Där står PHP-version. Där kan du också leta upp register_globals.
Se även om du kan hitta DOCUMENT_ROOT.

Eftersom du inte hittar $_SERVER['DOCUMENT_ROOT'] i ditt skript, testa

$absolute_path = $DOCUMENT_ROOT."/lindstrom/upload";
//eller
$absolute_path = $HTTP_SERVER_VARS['DOCUMENT_ROOT']."/lindstrom/upload";
Medlem sedan jan. 2003821 inlägg
#5

Matte skrev:

Vilken PHP-version kör du ?
Vilken inställning har du för register_globals ?

Om du inte vet det kan du skapa en fil med följande innehåll:

<?php phpinfo(); ?>

Där står PHP-version. Där kan du också leta upp register_globals.
Se även om du kan hitta DOCUMENT_ROOT.

Eftersom du inte hittar $_SERVER['DOCUMENT_ROOT'] i ditt skript, testa

$absolute_path = $DOCUMENT_ROOT."/lindstrom/upload";
//eller
$absolute_path = $HTTP_SERVER_VARS['DOCUMENT_ROOT']."/lindstrom/upload";

-> Akuell version på servern mm.

Medlem sedan aug. 20002 975 inlägg
#6

Du har med andra ord ingen DOCUMENT_ROOT.

Har läst lite och tror att det här skulle funka (sen kan det finnas andra saker):

$absolute_path = "/UserLib/lindstrom/upload";
Medlem sedan jan. 2003821 inlägg
#7

Matte skrev:

Du har med andra ord ingen DOCUMENT_ROOT.

Har läst lite och tror att det här skulle funka (sen kan det finnas andra saker):

$absolute_path = "/UserLib/lindstrom/upload";

Nu får jag inga fel mess på själva "upload" sidan. Men när jag nu har letet upp en bild som jag vill lägga upp. Så får jag messet:

..................................
CGI-fel
CGI-tillämpningen returnerade inte korrekta HTTP-huvuden. Huvudena var:
..................................

-> http://gardell.homeip.net/lindstrom/index.php?upload=doupload

Så nu är jag tillbaka där jag började, så att säga.

Medlem sedan aug. 20002 975 inlägg
#8

Det är väldigt svårt att följa din kod när du inte använt kod-taggarna, men vad jag kommit fram till är att skriptet kräver register_globals=On och du har Off.

Testa med att göra följande ändringar.

Ändra

if(!isset($upload)) { 
$upload = ""; 
}

till

if(!isset($_GET['upload'])) { 
    $upload = ""; 
} else {
    $upload = $_GET['upload'];
}

Ändra

case "doupload": 
include "config.php"; 
$endresult = "<font size=\"2\">File Was Uploaded</font>"; 
if ($file_name == "") { 
$endresult = "<font size=\"2\">No file selected</font>"; 
}else{ 
if(file_exists("$absolute_path/$file_name")) { 
$endresult = "<font size=\"2\">File Already Existed</font>"; 
} else { 
if (($size_limit == "yes") && ($limit_size < $file_size)) { 
$endresult = "<font size=\"2\">File was to big</font>"; 
} else { 
$ext = strrchr($file_name,'.'); 
if (($limit_ext == "yes") && (!in_array($ext,$extensions))) { 
$endresult = "<font size=\"2\">File is wrong type</font>"; 
}else{ 
@copy($file, "$absolute_path/$file_name") or $endresult = "<font size=\"2\">Couldn't Copy File To Server</font>"; 
}

till

case "doupload": 
include "config.php"; 
$endresult = "<font size=\"2\">File Was Uploaded</font>"; 
if ($file_name == "") { 
$endresult = "<font size=\"2\">No file selected</font>"; 
}else{ 
if(file_exists("$absolute_path/".$_FILES['file']['name'])) { 
$endresult = "<font size=\"2\">File Already Existed</font>"; 
} else { 
if (($size_limit == "yes") && ($limit_size < $_FILES['file']['size'])) { 
$endresult = "<font size=\"2\">File was to big</font>"; 
} else { 
$ext = strrchr($_FILES['file']['name'],'.'); 
if (($limit_ext == "yes") && (!in_array($ext,$extensions))) { 
$endresult = "<font size=\"2\">File is wrong type</font>"; 
}else{ 
@copy($_FILES['file']['tmp_name'], "$absolute_path/".$_FILES['file']['name']) or $endresult = "<font size=\"2\">Couldn't Copy File To Server</font>"; 
}
Medlem sedan jan. 2003821 inlägg
#9

Nää... jag får samma fel iallfall, så nu ger jag fan i det här.

Men tack för att du tog dig tid.

382 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
255 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)