Joomla.it Forum
Non solo Joomla... => Sviluppo => : mattyfog 13 Jan 2010, 21:22:59
-
Sono di fronte ad un errore probabilmente semplice.
Quando richiamo il componente ottengo all'interno della pagina joomla questo:
Uploader // Include the syndicate functions only once
Notice: Undefined index: miofile in F:\Downloads\wpp_2gb_3.5.2\winPenPack\Bin\wpp_pampa\PAMPA\apache\htdocs\www\sito01\components\com_uploader\uploader.php on line 34
Notice: Undefined index: miofile in F:\Downloads\wpp_2gb_3.5.2\winPenPack\Bin\wpp_pampa\PAMPA\apache\htdocs\www\sito01\components\com_uploader\uploader.php on line 35
Si sono verificati dei problemi durante l'Upload
Questi errori si generano perchè viene eseguito il codice all'interno dell'if (che ho "grassettato" nel codice seguente).
Invece, siccome per richiamare il componente devo andare alla pagina http://localhost:85/www/sito01//index.php?option=com_uploader (http://localhost:85/www/sito01//index.php?option=com_uploader) la variabile $_FILES (che è un array) non dovrebbe essere assegnata. Pertanto dovrebbe venire eseguito il codice nell'else.
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
echo '
<div class="componentheading">Uploader'
?>
// Include the syndicate functions only once
<?PHP
[B]if(isset($_FILES))[/B] {
[....codice....]
}
else
{
[....codice....]
}
?>
Dove sbaglio?
Grazie a tutti per il tempo vi faccio perdere sempre più spesso.
-
isset() determina se una variabile è definita e $_FILES è SEMPRE definita... usa empty() ;)
ciao,
marco
ps: in realtà sarebbe un hash table...
-
ho quindi scritto così:
if(empty($_FILES))
ma ho sempre lo stesso problema
-
noooo >:(
leggi le istruzioni su come usare $_FILES su php.net
ciao,
marco
-
risolto grazie infinite :)
qui la documentazione: http://php.net/manual/en/features.file-upload.php
senti però ho ancora un problema: cioè il componente appare come se fosse in un wrapper con altezza di 5px, voglio dire, il testo "prodotto" dal componente non si riesce a leggere perchè joomla visualizza solo la prima riga e mezza ed il resto rimane coperto.. come faccio?
-
dovrei essere un indovino per capirlo! ;D
verifica nel codice html se vi è tutto l'output che sarebbe dovuto essere prodotto. se c'è potrebbe essere un problema di css, o un errore nell'html scritto dal tuo componente: verifica che ogni tag aperto sia correttamente chiuso.
ciao,
marco
-
il programma produce questo codice:
<html><head/><body>
<form action='index.php?option=com_uploader' enctype='multipart/form-data' method='post'>
<input name='miofile' type='file' />
<input type='submit' value='Upload' /> </form>
</body><html>
potrebbe essere il problema?
-
non lo so, ma se sei all'interno dell'area component di un template perché inizi con '<html><head/><body>' il tuo output?? (sei nel mezzo di una pagina)
ciao,
marco
-
non va uguale eppure è l'unico codice che viene prodotto..
-
up
-
eh calma! >:(
ci sono anche gli altri...
che significa l'unico codice che viene prodotto che non c'è il template o che il tuo componente genera solo quel codice?
se il codice indicato è ciò che il componente genera, correttamente, ed è correttamente inserito nel template, verifica che che non sia stato ridefinito lo style dei tag usati (form ed input) da qualche parte del css, o che il contenitore (div?) del componente non abbia errori.
ciao,
marco
-
l'intero componente è costituito da un solo il file il cui codice è il seguente:
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
echo '
<div class="componentheading">Uploader'
?>
<?PHP
if(empty($_FILES['attachement']) && !empty($_FILES['attachement']['name']))
{
//RECUPERO IL NOME UTENTE
$user =& JFactory::getUser();
// RECUPERO I PARAMETRI DA PASSARE ALLA FUNZIONE PREDEFINITA PER L'UPLOAD
$cartella = 'upload/';
$percorso = $_FILES['miofile']['tmp_name'];
$nome = $_FILES['miofile']['name'];
//CREO UNA CARTELLA PER L'UTENTE NEL CASO NON ESISTESSE GIA', IN QUESTA CARTELLA VERRANNO CARICATI I FILE DI QUELL'UTENTE
$intDir=$_SERVER['DOCUMENT_ROOT'].'/upload/'.$user->username.'/';
if (is_dir($intDir))
{
}
else
{
mkdir($intDir, 0777);
}
// ESEGUO L'UPLOAD CONTROLLANDO L'ESITO
if (move_uploaded_file($percorso, $_SERVER['DOCUMENT_ROOT'].'/upload/'.$user->username.'/'))
{
print "Upload eseguito con successo";
//INVIO DELLA MAIL
$destinatario="mail@destinatario.it";
$oggetto="E' stato caricato un file da ".$user->username;
$messaggio="messaggio mail";
mail($destinatario, $oggetto, $messaggio);
}
else
{
print "Si sono verificati dei problemi durante l'Upload";
}
}
else
{
echo "<form action='index.php?option=com_uploader' enctype='multipart/form-data' method='post'>
<input name='miofile' type='file' />
<input type='submit' value='Upload' /> </form>";
}
?>
-
a parte che non si deve postare inutilmente codice, ma al più allegarlo (e quindi cancellalo), dove è la chiusura del div ad inizio pagina?
-
Mm forse potrebbe essere proprio il div.. Grazie :)
Non mi sembra di aver postato inutilmente codice, nè tantomeno che sia fastidioso, anzi mi sembra + comodo di un allegato.
-
sì, ma intasa il db e rallenta le ricerche.
ps: di controllare i tags mi pare di averlo detto 7 post fa >:(
ciao
-
date un'occhiata al codice sorgente in allegato please, non carica niente.. :(
perchè?
[allegato vecchio più di un anno eliminato automaticamente]
-
mattyfog invece di postare codice ed allegati fai cosa utile citando il nome del componente perchè non è come il codice html che si risolve tutto in due righe..
è almeno un componente joomla e non commerciale?
-
è un semplice componente che ho fatto io da zero