Page 1 sur 1

demande d'aide pour débugger fonction avec form action=self

Posté : 17 sept. 2009, 11:41
par fission
Salut a tous,

j'ai un soucis avec le code suivant :
function fileAdd ()
{
	global $xoopsDB, $xoopsModule, $xoopsModuleConfig;
	xoops_cp_header();
	echo"<table width='100%' class='outer' cellspacing='1'><tr><th colspan='2'>"._MD_MENU_FILE."</TH></tr>";
	echo "<tr valign='top' align='left'><td class='head'></td><td class='even'>";
	echo "file : ".$_FILE['userfile']."<BR>";
	echo "post : ".$_POST['userfile']."<BR>";
	echo "get : ".$_GET['userfile']."<BR>";
	echo "request : ".$_REQUEST['userfile']."<BR>";
    if (isset($_FILE['userfile']))
    {
	$userfile = $_FILE["userfile"];
if (copy($userfile,$userfile_name)) 
{ 
echo "<p>Le fichier a été copier avec succès !</p><BR>";

echo "poursuite du traitement<BR>";
$zoom='15';
$status='1';


  $filename=$userfile_name;

  $dom = new DOMDocument();
  if (!$dom->load("$filename")) {
    echo "Erreur lors du parsing du document xml $filename\n";
    exit;
  }
  if (!$handle = fopen($filename, "r"))
  {
    echo "Erreur d'ouverture du fichier $filename pour écriture";
    exit;
  }
// On parse le xml pour extraire le nom du Parcours
//   			<PROFIL_NOM>(Défaut)</PROFIL_NOM>
  $elementnom=$dom->getelementsbytagname("PROFIL_NOM");
  $nodenom=$elementnom->item(0);
  $textenom=$nodenom->textContent;
// on teste si le nom est différent de défault  
  if ($textenom == '(Défaut)') {
   $lastdot=strrpos ( $filename, ".");
  $name=substr($filename, $lastdot);
  } else {
  $name=$textenom;
  }
  unset($elementnom, $nodenom, $textenom);
// On parse le xml pour extraire l EMPRISE
//   			<EMPRISE>48.862381,2.288442,48.836777,2.368047</EMPRISE>
  $elementemprise=$dom->getelementsbytagname("EMPRISE");
  $nodeemprise=$elementemprise->item(0);
  $texteemprise=$nodeemprise->textContent;
// on extrait de l'emprise les latitudes et longitudes
  $emp = explode(",", $texteemprise);  
  $emp1=$emp[1];
  $emp2=$emp[0];
// on recup l'ancien map_id de la category googlemap  
  $recupmapid->mysql_query("SELECT max(map_id) FROM xoops_gmap_category");
  $r = mysql_fetch_array($recupmapid);
  $map_id=$r['id']+1;
//on recup l'ancien order de category
  $recuporder->mysql_query("SELECT max(order) FROM xoops_gmap_category where map_id='$map_id'");
  $s = mysql_fetch_array($recuporder);
  $order=$s['id']+1;
// on recup l'ancien id des plots  
  $recuppid->mysql_query("SELECT max(id) FROM xoops_gmap_pl");
  $t = mysql_fetch_array($recuppid);
  $p_id=$t['id'];
// on insere les infos dans la catégorie
  $category = "INSERT INTO xoops_gmap_category (name,lon,lat,zoom,active,order) VALUES ('$name','$emp2','$emp1','$zoom','$status','$order')";
  unset($elementemprise, $nodeemprise, $texteemprise);
// On parse le xml pour extraire les ETAPES
//		<ETAPE>
//			<POSITION>48.860538,2.290330</POSITION>
//			<ALTITUDE>32.500000</ALTITUDE>
//			<ETAPE_REMARQUABLE>1</ETAPE_REMARQUABLE>	// C'est le point d'une pause
//		</ETAPE>

  $elementsetapes=$dom->getelementsbytagname("ETAPE");
  $i=-1;
  $recupid->mysql_query("SELECT max(id) FROM xoops_gmap_points");
  $q = mysql_fetch_array($recupid);
  $id=$q['id']+1;
// on fait ue boucle pour les etapes-points
 foreach ( $elementsetapes as $elementetape )
  {
    $i++;
	$p_id++;
// On lit les elements de l étape: POSITION, ALTITUDE, REMARQ.
  $position=$elementetape->getelementsbytagname("POSITION")->item(0)->textContent;
// On déclare les variables nécéssaires pour les points
  $cmpt=$i+1;
  $titlepoint=$cmpt;
  $htmlpoint=$cmpt;
  $submitterpoint='1';
  $datepoint = time();
  $orderpoint=$cmpt;
  $activepl='1';
  $coordonneesetape = explode(",", $position);
  $lon=$coordonneesetape[0];
  $lat=$coordonneesetape[1];
$pid=$p_id+1; 
// On insere les points des etapes
  $points = "INSERT INTO xoops_gmap_points (map_id,lat,lon,title,html,zoom,submitter,status,date,order) VALUES
  ('$id','$map_id','$lat','$lon','$titlepoint','$htmlpoint','$zoom','$submitterpoint','$status','$datepoint','$orderpoint')";
// on insere les plots
  $pl = "INSERT INTO xoops_gmap_pl (id,map_id,point_id1,point_id2,active) VALUES ('$p_id','$map_id','$p_id','$pid','$activepl')";
}
// fin de la boucle sur les étapes
unset($elementsetapes, $position, $elementetape);
 
echo "fichier".$filename."uploadé";
	xoops_cp_footer();
	exit();
  } 
else 
{ 
echo "<p>Erreur lors de la copie !</p>"; 
	xoops_cp_footer();
	exit();
}
   Echo "Fin du traitement";         
    }
    else
    {
	echo "<form name='userfile' method=post ENCTYPE='multipart/form-data' action='index.php?op=fileAdd'>\n";

	echo "<input type='hidden' name='MAX_FILE_SIZE' value='300000'>"; 
	echo "<p>"._MD_ADD_TEXT.":";
	echo "<input type=file name=userfile size=20>";
	echo "</p>";
	echo "<tr valign='top' align='left'><td class='head'></td><td class='even'><input type='submit' class='formButton' name='post'  id='post' value='"._MD_ADD_FILE."' accesskey=\"s\" /></form></td></tr></table>";
	xoops_cp_footer();
    }

}
c'est un morceau de code que j'ajoute au module google maps 0.83 sur mon xoops 2.2.4 afin de pouvoir créer des itinéraires a partir de mes fichiers IGN rando. Malheureusement l'upload ne fonctionne pas ( je fini direct avec le message" Erreur lors de la copie" et mon fichier ne s'upload pas :'( dans cette version de script alors que cela fonctionne ( sauf les appels mysql puisque je ne renseigne pas la base :p )si je fait ca :
function fileAdd ()
{
	global $xoopsDB, $xoopsModule, $xoopsModuleConfig;
	xoops_cp_header();
	echo"<table width='100%' class='outer' cellspacing='1'><tr><th colspan='2'>"._MD_MENU_FILE."</TH></tr>";
	echo "<tr valign='top' align='left'><td class='head'></td><td class='even'>";
	echo "<form name='userfile' method=post ENCTYPE='multipart/form-data' action='fichier.php'>\n";
	echo "<input type='hidden' name='MAX_FILE_SIZE' value='300000'>"; 
	echo "<p>"._MD_ADD_TEXT.":";
	echo "<input type=file name=userfile size=20>";
	echo "</p>";
	echo "<tr valign='top' align='left'><td class='head'></td><td class='even'><input type='submit' class='formButton' name='post'  id='post' value='"._MD_ADD_FILE."' accesskey=\"s\" /></form></td></tr></table>";
	xoops_cp_footer();
    }
et que je créer un fichier fichier.php avec :
<?php
if (isset($_FILE['userfile']))
    {
	$userfile = $_FILE["userfile"];
if (copy($userfile,$userfile_name)) 
{ 
echo "<p>Le fichier a été copier avec succès !</p><BR>";

echo "poursuite du traitement<BR>";
$zoom='15';
$status='1';


  $filename=$userfile_name;

  $dom = new DOMDocument();
  if (!$dom->load("$filename")) {
    echo "Erreur lors du parsing du document xml $filename\n";
    exit;
  }
  if (!$handle = fopen($filename, "r"))
  {
    echo "Erreur d'ouverture du fichier $filename pour écriture";
    exit;
  }
// On parse le xml pour extraire le nom du Parcours
//   			<PROFIL_NOM>(Défaut)</PROFIL_NOM>
  $elementnom=$dom->getelementsbytagname("PROFIL_NOM");
  $nodenom=$elementnom->item(0);
  $textenom=$nodenom->textContent;
// on teste si le nom est différent de défault  
  if ($textenom == '(Défaut)') {
   $lastdot=strrpos ( $filename, ".");
  $name=substr($filename, $lastdot);
  } else {
  $name=$textenom;
  }
  unset($elementnom, $nodenom, $textenom);
// On parse le xml pour extraire l EMPRISE
//   			<EMPRISE>48.862381,2.288442,48.836777,2.368047</EMPRISE>
  $elementemprise=$dom->getelementsbytagname("EMPRISE");
  $nodeemprise=$elementemprise->item(0);
  $texteemprise=$nodeemprise->textContent;
// on extrait de l'emprise les latitudes et longitudes
  $emp = explode(",", $texteemprise);  
  $emp1=$emp[1];
  $emp2=$emp[0];
// on recup l'ancien map_id de la category googlemap  
  $recupmapid->mysql_query("SELECT max(map_id) FROM xoops_gmap_category");
  $r = mysql_fetch_array($recupmapid);
  $map_id=$r['id']+1;
//on recup l'ancien order de category
  $recuporder->mysql_query("SELECT max(order) FROM xoops_gmap_category where map_id='$map_id'");
  $s = mysql_fetch_array($recuporder);
  $order=$s['id']+1;
// on recup l'ancien id des plots  
  $recuppid->mysql_query("SELECT max(id) FROM xoops_gmap_pl");
  $t = mysql_fetch_array($recuppid);
  $p_id=$t['id'];
// on insere les infos dans la catégorie
  $category = "INSERT INTO xoops_gmap_category (name,lon,lat,zoom,active,order) VALUES ('$name','$emp2','$emp1','$zoom','$status','$order')";
  unset($elementemprise, $nodeemprise, $texteemprise);
// On parse le xml pour extraire les ETAPES
//		<ETAPE>
//			<POSITION>48.860538,2.290330</POSITION>
//			<ALTITUDE>32.500000</ALTITUDE>
//			<ETAPE_REMARQUABLE>1</ETAPE_REMARQUABLE>	// C'est le point d'une pause
//		</ETAPE>

  $elementsetapes=$dom->getelementsbytagname("ETAPE");
  $i=-1;
  $recupid->mysql_query("SELECT max(id) FROM xoops_gmap_points");
  $q = mysql_fetch_array($recupid);
  $id=$q['id']+1;
// on fait ue boucle pour les etapes-points
 foreach ( $elementsetapes as $elementetape )
  {
    $i++;
	$p_id++;
// On lit les elements de l étape: POSITION, ALTITUDE, REMARQ.
  $position=$elementetape->getelementsbytagname("POSITION")->item(0)->textContent;
// On déclare les variables nécéssaires pour les points
  $cmpt=$i+1;
  $titlepoint=$cmpt;
  $htmlpoint=$cmpt;
  $submitterpoint='1';
  $datepoint = time();
  $orderpoint=$cmpt;
  $activepl='1';
  $coordonneesetape = explode(",", $position);
  $lon=$coordonneesetape[0];
  $lat=$coordonneesetape[1];
$pid=$p_id+1; 
// On insere les points des etapes
  $points = "INSERT INTO xoops_gmap_points (map_id,lat,lon,title,html,zoom,submitter,status,date,order) VALUES
  ('$id','$map_id','$lat','$lon','$titlepoint','$htmlpoint','$zoom','$submitterpoint','$status','$datepoint','$orderpoint')";
// on insere les plots
  $pl = "INSERT INTO xoops_gmap_pl (id,map_id,point_id1,point_id2,active) VALUES ('$p_id','$map_id','$p_id','$pid','$activepl')";
  
  
  

  }
// fin de la boucle sur les étapes
unset($elementsetapes, $position, $elementetape);
 
echo "fichier".$filename."uploadé";
	exit();
  } 
else 
{ 
echo "<p>Erreur lors de la copie !</p>"; 
	exit();
}
   Echo "Fin du traitement";         
    }
?>
Si quelqu'un avait la bonté de m'aider pour débugger ma fonction fileAdd, ca me retirerait une sacré épine du pied !!

PS : le phpinfo me réponds :

Code : Tout sélectionner

PHP Version 5.2.8 System Linux imu141 2.6.27.30-imu-x86 #1 SMP Mon Aug 24 15:57:17 CEST 2009 i686 Build Date Feb 16 2009 11:24:58 Server API Apache 2.0 Handler Virtual Directory Support enabled Configuration File (php.ini) Path /opt/php/lib Loaded Configuration File /opt/php/lib/php.ini Scan this dir for additional .ini files (none) additional .ini files parsed (none) PHP API 20041225 PHP Extension 20060613 Zend Extension 220060519 Debug Build no Thread Safety enabled Zend Memory Manager enabled IPv6 Support enabled Registered PHP Streams php, file, data, http, ftp, compress.zlib, https, ftps, zip Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls Registered Stream Filters string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*, zlib.*, http.* This program makes use of the Zend Scripting Language Engine: Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies with the ionCube PHP Loader v3.1.32, Copyright (c) 2002-2007, by ionCube Ltd., and with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies -------------------------------------------------------------------------------- Configuration PHP Core Directive Local Value Master Value allow_call_time_pass_reference Off Off allow_url_fopen Off Off allow_url_include Off Off always_populate_raw_post_data Off Off arg_separator.input & & arg_separator.output & & asp_tags Off Off auto_append_file no value no value auto_globals_jit On On auto_prepend_file no value no value browscap /opt/php/lib/php/browscap.ini /opt/php/lib/php/browscap.ini default_charset no value no value default_mimetype text/html text/html define_syslog_variables Off Off detect_unicode On On disable_classes no value no value disable_functions set_time_limit,passthru,exec,system,popen,shell_exec,proc_open set_time_limit,passthru,exec,system,popen,shell_exec,proc_open display_errors On On display_startup_errors Off Off doc_root no value no value docref_ext no value no value docref_root no value no value enable_dl Off Off error_append_string no value no value error_log no value no value error_prepend_string no value no value error_reporting 6135 6135 expose_php Off Off extension_dir /opt/php/lib/php/extensions/no-debug-zts-20060613/ /opt/php/lib/php/extensions/no-debug-zts-20060613/ file_uploads On On highlight.bg #FFFFFF #FFFFFF highlight.comment #FF8000 #FF8000 highlight.default #0000BB #0000BB highlight.html #000000 #000000 highlight.keyword #007700 #007700 highlight.string #DD0000 #DD0000 html_errors On On ignore_repeated_errors Off Off ignore_repeated_source Off Off ignore_user_abort Off Off implicit_flush Off Off include_path .:/opt/php/lib/php .:/opt/php/lib/php log_errors On On log_errors_max_len 1024 1024 magic_quotes_gpc Off Off magic_quotes_runtime Off Off magic_quotes_sybase Off Off mail.force_extra_parameters no value no value max_execution_time 10 10 max_input_nesting_level 64 64 max_input_time 10 10 memory_limit 48M 16M open_basedir /home/www/f08b3d4694b3cc2ac1c428fe153f46b3:/tmp:/opt/php/lib/php no value output_buffering 20480 20480 output_handler no value no value post_max_size 48M 48M precision 14 14 realpath_cache_size 16K 16K realpath_cache_ttl 120 120 register_argc_argv Off Off register_globals On On register_long_arrays On On report_memleaks On On report_zend_debug On On safe_mode Off Off safe_mode_exec_dir no value no value safe_mode_gid Off Off safe_mode_include_dir no value no value sendmail_from no value no value sendmail_path /usr/sbin/sendmail_r -t -i -fwebmaster@************.org /usr/sbin/sendmail -t -i serialize_precision 100 100 short_open_tag On On SMTP localhost localhost smtp_port 25 25 sql.safe_mode Off Off track_errors Off Off unserialize_callback_func no value no value upload_max_filesize 48M 48M upload_tmp_dir no value no value user_dir no value no value variables_order EGPCS EGPCS xmlrpc_error_number 0 0 xmlrpc_errors Off Off y2k_compliance On On zend.ze1_compatibility_mode Off Off