| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

08-06-2008, 20:14
|
|
MegaPixel
Newbie
|
|
Registriert seit: Apr 2008
Ort: 127.0.0.1
Beiträge: 17
|
|
Cannot redeclare function()
hallo,
ich hab eine funktion geschrieben, die mir hochgeladene dateien zuerst auf vorhandensein prüft, und falls vorhanden eine funktion aufruft, die diese dann umbenennt, aufm server speichert, und eine url zur datei in ne datenbank schreibt, so weit so gut, wenn ich jetzt allerdings mehrere dateien übergebe, kommt immer diese fehlermeldung:
Cannot redeclare rename_file() (previously declared in I:\xampplite\htdocs\J4f_Website\inc\adminfunctions.inc.php:920) in I:\xampplite\htdocs\J4f_Website\inc\adminfunctions.inc.php on line 920
was ich aber nicht verstehe, denn ich binde diese funktion vorher ein, sie befindet sich in adminfunktions.inc.php, und wird dann in das prüfende script eingebunden:
PHP-Code:
include('../inc/base.inc.php');
include('../inc/adminfunctions.inc.php');
include('../inc/login.inc.php');
hier die ganzen benutzereingaben die per post übertragen werden
(würde hier stehen, lass ich weg weil nicht relevant)
for($i = 0; $_FILES['previewImg'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'previewImg'.$i;
$rename = 'memberpreviewImg';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
for($i = 0; $_FIlES['previewTuning'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'previewTuning'.$i;
$rename = 'memberpreviewTuning';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
for($i = 0; $_FILES['picture'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'picture'.$i;
$rename = 'memberpicture';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
hier die funktion uploaded_file_memberinsert() die in adminfunktions definiert wurde:
PHP-Code:
function uploaded_file_memberinsert($dst,$id,$picture,$rename)
{
function rename_file($dst,$id,$picture,$rename,$i = 0)
{
$string = explode(".",$_FILES[$picture]['name']);
$string = str_replace($string[0],$rename.''.$i,$string);
$newfilename = implode(".",$string);
$_FILES[$picture]['name'] = $newfilename;
$tstring = "../img/upedimages/$newfilename";
if(file_exists($tstring))
{
$i++;
return rename_file($dst,$id,$picture,$rename,$i);
}
else
{
if(move_uploaded_file($_FILES[$picture]['tmp_name'],$tstring))
{
$string = str_replace('../','',$tstring);
$url = 'test'.$string;
switch($dst)
{
case 'gallery/insert':
$sql = "INSERT INTO uped_img (url,uid,rel,visible) VALUES ('$url','$id','$rename','1')";
break;
case 'gallery/update':
$sql = "UPDATE uped_img SET url = '$url' WHERE uid = '$id'";
break;
case 'gallery/del':
$sql = "";
break;
}
//die("$dst<br />$newfilename<br />$id<br />$picture<br />$i");
include('../inc/database.inc.php');
mysql_connect($db['host'],$db['uid'],$db['pwd']);
mysql_select_db($db['db']);
$result = mysql_query($sql);
mysql_close();
}
else
{
return false;
}
}
}
rename_file($dst,$id,$picture,$rename);
}
ich verstehe einfach nicht wiso diese fehlermeldung auftritt!
hoffentlich kann mir jemand weiterhelfen.
|

08-06-2008, 20:28
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Du inkludierst 2mal die Datei adminfunctions.inc.php. include_once sollte Abhilfe schaffen.
|

08-06-2008, 20:34
|
|
MegaPixel
Newbie
|
|
Registriert seit: Apr 2008
Ort: 127.0.0.1
Beiträge: 17
|
|
hmm, also ich includiere adminfunctions nur einmal, in dieser datei ist die funktion uploaded_file_memberinsert() definiert.
ich habs dennoch versucht mit include_once, hat nicht geholfen.
|

08-06-2008, 20:42
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
PHP lügt nicht.
Schau nach, wo die Datei noch inkludiert wird.
|

08-06-2008, 20:54
|
|
MegaPixel
Newbie
|
|
Registriert seit: Apr 2008
Ort: 127.0.0.1
Beiträge: 17
|
|
Das ist der code der gesammten datei die auf vorhandensein prüft und gegebenenfalls die funktion zur sicherung und umbenennung in adminfunctions.inc.php aufruft. in adminfunktions selbst wurden wie der name schon erahnen lässt nur funktionen deklariert, außerhalb dieser funktionen wird nichts eingebunden.
und wie du selbst sehen kanns, wird die datei hier nur einmal am anfang des scriptes eingebunden:
PHP-Code:
<?php
/* Konfigurationsdateien laden */
include_once('../inc/base.inc.php');
include_once('../inc/adminfunctions.inc.php');
include_once('../inc/login.inc.php');
/* Überprüfen ob Login erfolgt ist, ggf. Anmeldemöglichkeit bieten */
if(is_logged_in())
{
//$_FILES['imgUrlPerson']['tmp_name'] == false ? $urlImgPerson = $_POST['urlImgPerson']['tmp_name'] : $urlImgPerson = '';
//$_FILES['imgUrlCar']['tmp_name'] == false ? $urlImgCar = $_POST['urlImgCar'] : $urlImgCar = '';
$id = $_POST['id'];
$visible = $_POST['visible'];
$name = $_POST['name'];
$birthday = $_POST['birthday'];
$hobbys = $_POST['hobbys'];
$status = $_POST['status'];
$memberSince = $_POST['memberSince'];
$job = $_POST['job'];
$city = $_POST['city'];
$previousCars = $_POST['previousCars'];
$brand = $_POST['brand'];
$build = $_POST['build'];
$color = $_POST['color'];
$hp = $_POST['hp'];
$additions = $_POST['additions'];
$engine = $_POST['engine'];
$outside = $_POST['outside'];
$inside = $_POST['inside'];
$hifi = $_POST['hifi'];
include('../inc/database.inc.php');
$connection = mysql_connect($db['host'],$db['uid'],$db['pwd']);
if($connection)
{
mysql_select_db($db['db']);
$sql = "INSERT INTO member_person (name,birthday,hobbys,status,memberSince,job,city,previousCars,visible) VALUES ('$name','$birthday','$hobbys','$status','$memberSince','$job','$city','$previousCars',$visible)";
mysql_query($sql);
$sql = "SELECT id FROM member_person WHERE member_person.name = '$name' AND member_person.birthday = '$birthday'";
$urslt = mysql_query($sql);
$uid = mysql_fetch_object($urslt);
$sql = "INSERT INTO member_car (uid,brand,build,color,hp,additions,visible) VALUES ('$uid->id','$brand','$build','$color','$hp','$additions',$visible)";
mysql_query($sql);
$sql = "INSERT INTO member_tuning (uid,engine,outside,inside,hifi,visible) VALUES ('$uid->id','$engine','$outside','$inside','$hifi',$visible)";
$result = mysql_query($sql);
$uidname = "$uid->id";
for($i = 0; $_FILES['previewImg'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'previewImg'.$i;
$rename = 'memberpreviewImg';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
for($i = 0; $_FIlES['previewTuning'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'previewTuning'.$i;
$rename = 'memberpreviewTuning';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
for($i = 0; $_FILES['picture'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'picture'.$i;
$rename = 'memberpicture';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
?>
<script type="text/javascript">
location.href = 'index.php?cmd=members';
</script>
<?php
//header('Location: index.php?cmd=members');
}
}
?>
|

08-06-2008, 21:14
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
ruf doch mal bitte die adminfunctions.inc.php direkt auf. Was passiert?
|

08-06-2008, 21:20
|
|
MegaPixel
Newbie
|
|
Registriert seit: Apr 2008
Ort: 127.0.0.1
Beiträge: 17
|
|
da kommt wie erwartet und wie es soll eine leere html seite bei raus
|

08-06-2008, 21:21
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
In base.inc.php, login.inc.php und database.inc.php wird auch keine adminfunctions.inc.php inkludiert?
|

08-06-2008, 21:22
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Hast du in den anderen irgendwo die admin-datei nochmal includiert?
ansonsten solltest du mal debuggen. (einzelne includes ausschließen)
Wenn das alles nicht hilft, solltest du mal alle 4 Dateien (ggf. als Anhang) hier posten.
|

08-06-2008, 21:25
|
|
MegaPixel
Newbie
|
|
Registriert seit: Apr 2008
Ort: 127.0.0.1
Beiträge: 17
|
|
nö fix nicht, ich lad ma die dateien hoch
|

08-06-2008, 21:33
|
|
MegaPixel
Newbie
|
|
Registriert seit: Apr 2008
Ort: 127.0.0.1
Beiträge: 17
|
|
im anhang findet ihr den gesammten code, dieser code hier ist von der datei die den upload verarbeitet:
PHP-Code:
<?php
/* Konfigurationsdateien laden */
include_once('../inc/base.inc.php');
include_once('../inc/adminfunctions.inc.php');
include_once('../inc/login.inc.php');
/* Überprüfen ob Login erfolgt ist, ggf. Anmeldemöglichkeit bieten */
if(is_logged_in())
{
//$_FILES['imgUrlPerson']['tmp_name'] == false ? $urlImgPerson = $_POST['urlImgPerson']['tmp_name'] : $urlImgPerson = '';
//$_FILES['imgUrlCar']['tmp_name'] == false ? $urlImgCar = $_POST['urlImgCar'] : $urlImgCar = '';
$id = $_POST['id'];
$visible = $_POST['visible'];
$name = $_POST['name'];
$birthday = $_POST['birthday'];
$hobbys = $_POST['hobbys'];
$status = $_POST['status'];
$memberSince = $_POST['memberSince'];
$job = $_POST['job'];
$city = $_POST['city'];
$previousCars = $_POST['previousCars'];
$brand = $_POST['brand'];
$build = $_POST['build'];
$color = $_POST['color'];
$hp = $_POST['hp'];
$additions = $_POST['additions'];
$engine = $_POST['engine'];
$outside = $_POST['outside'];
$inside = $_POST['inside'];
$hifi = $_POST['hifi'];
include('../inc/database.inc.php');
$connection = mysql_connect($db['host'],$db['uid'],$db['pwd']);
if($connection)
{
mysql_select_db($db['db']);
$sql = "INSERT INTO member_person (name,birthday,hobbys,status,memberSince,job,city,previousCars,visible) VALUES ('$name','$birthday','$hobbys','$status','$memberSince','$job','$city','$previousCars',$visible)";
mysql_query($sql);
$sql = "SELECT id FROM member_person WHERE member_person.name = '$name' AND member_person.birthday = '$birthday'";
$urslt = mysql_query($sql);
$uid = mysql_fetch_object($urslt);
$sql = "INSERT INTO member_car (uid,brand,build,color,hp,additions,visible) VALUES ('$uid->id','$brand','$build','$color','$hp','$additions',$visible)";
mysql_query($sql);
$sql = "INSERT INTO member_tuning (uid,engine,outside,inside,hifi,visible) VALUES ('$uid->id','$engine','$outside','$inside','$hifi',$visible)";
$result = mysql_query($sql);
$uidname = "$uid->id";
for($i = 0; $_FILES['previewImg'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'previewImg'.$i;
$rename = 'memberpreviewImg';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
for($i = 0; $_FIlES['previewTuning'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'previewTuning'.$i;
$rename = 'memberpreviewTuning';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
for($i = 0; $_FILES['picture'.$i]['tmp_name'] == true; $i++)
{
$dst = 'gallery/insert';
$picture = 'picture'.$i;
$rename = 'memberpicture';
uploaded_file_memberinsert($dst,$uidname,$picture,$rename);
}
?>
<script type="text/javascript">
location.href = 'index.php?cmd=members';
</script>
<?php
//header('Location: index.php?cmd=members');
}
}
?>
Geändert von MegaPixel (08-06-2008 um 21:37 Uhr)
|

08-06-2008, 21:36
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Zitat:
|
die adminfunctions kann ich nicht hochladen, da ist zu viel vertrauliches drin, aber ich kann schwören, dass ich da wenn ich was includiere, dies nur in den jeweiligen funktionen tue.
|
Dann versuch bitte mit der Suchenfunktion deines Editors auf den Fehler zu kommen.
Die Datenbank.inc verschweigst du auch?
Es steht hier Aussage gegen Aussage (PHP gegen User). Und glaub mir, idR. sollte man - besonders als Außenstehender - hier der PHP-Seite glauben. Im zweifel für den Angeklagten.
|

08-06-2008, 21:40
|
|
MegaPixel
Newbie
|
|
Registriert seit: Apr 2008
Ort: 127.0.0.1
Beiträge: 17
|
|
wenns dir darum geht, ich hab zur probe die funktion uploaded_file_memberinsert() aus der adminfunktions rausgenommen, und direkt in das verarbeitende script hinzugefügt, da kommt der selbe fehler.
aja verzeihung, hier der inhalt der database.inc
<?php
$db['db'] = 'j4f';
$db['host'] = 'localhost';
$db['uid'] = 'root';
$db['pwd'] = '';
?>
ihr verfügt nun bereits über den gesammten code den dieses prozedere benötigt, bzw einbindet.
Geändert von MegaPixel (08-06-2008 um 21:43 Uhr)
|

08-06-2008, 21:42
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Zitat:
|
wenns dir darum geht, ich hab zur probe die funktion uploaded_file_memberinsert() aus der adminfunktions rausgenommen, und direkt in das verarbeitende script hinzugefügt, da kommt der selbe fehler.
|
Dann tritt der Fehler auf, BEVOR überhaupt der neu eingefügte Code ausgeführt wird. Ansonsten würdest du nämlich eine leicht abgewandelte Fehlermeldung erhalten.
Aber es klappt doch mit dem Debuggen. Nur weiter so.
|

08-06-2008, 21:45
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Ach ich/du Esel.
Du definierst die Funktion "rename_file" IN der Funktion "uploaded_file_memberinsert". Das ist natürlich in erster Linie ziemlich schlechter Stil, apätestens aber, wenn du letztere Funktion ein zweites mal aufrufst, dann wird natürlich auch "rename_file" ein zweites mal versucht zu definieren. Was natürlich nicht geht.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|