Immagini e form
Immagini e form postato il 09/12/2014 15:54:19 nel forum programmazione, open source e hosting
salve ragazzi,
rieccomi a cercar aiuto, sperando non solo di disturbare ma di aiutare altri utenti oltre a me.
Ecco la mia domanda (riferita sempre a GDRCD 5.2 Stable), vorrei creare un input box per l'avatar invece che usare semplici link che secondo me limitano un po l'utente che vuole creare un avatar personalizzato magari con vecchie foto che ha sul proprio hd e ovviamente non ha voglia di star li a caricarle su hosting come imageshack.
Quindi idee su come integrare nella scheda_modifica un caricamento immagini oppure anche usando una pagina esterna ( che dopo integrare col template tramite main?page=pagine).
Inizierei che ho fatto una mini ricerca per la pagina esterna e quello che ho trovato però non mi sembra il massimo:
/***per l'input ****/
<form method="post" action="paginaupload.php">
<input type="file" name="foto" />
<br />
<input type="submit" value="Invia" />
</form>
/***paginaupload.php ****/
<?php
$nomefile = $_FILES['foto']['name'];
$destinazione = "./immagini/";
if (file_exists($destinazione.$nomefile))
die("Errore: file già presente sul server!");
if ($_FILES['foto']['size']>250000)
die("Errore: dimensioni del file troppo grandi!");
$type = $_FILES['foto']['type'];
if ($type != "image/gif" && $type != "image/jpeg")
die("Errore: tipo di file non corretto!");
$temp = $_FILES['foto']['tmp_name'];
move_uploaded_file($temp, $destinazione.$nomefile);
?>
ovviamente oltre a non darmi upload corretto ( strano che non vada al primo colpo 🤣) non capisco se devo creare un parametro poi nel db così che ogni utente abbia la propria.
Spero di esser stato chiaro Buona giornata 🆘🆘

😅
Pagine → 1
09/12/2014 19:21:27
manca il codice della funzione move_uploaded_file()
10/12/2014 10:36:06
quindi devo creare un altro file php o subito sotto ? e che codice sarebbe?
10/12/2014 15:31:55 e modificato da leoblacksoul il 10/12/2014 15:32:41
Breaker la funzione move_uploaded_file è una funzione nativa di PHP. http://php.net/manual/en/function.move-uploaded-file.php ↗
Pamela4e, nonostante il codice possa funzionare (con qualche correzione) io ti sconsiglierei di implementare l'upload di file se non sei esperto.
Permettere l'upload costituisce un'operazione rischiosa per un sito web, è un rischio per la sicurezza e va programmata con molta cautela per evitare che chiunque possa abusarne per hostare file a caso nel tuo sito.
Ci sono controlli da fare sulla grandezza massima di un file, sul suo formato, bisogna assicurarsi che non siano in grado di riempire tutto lo spazio su disco che il tuo hosting ti concede, che non siano file che possono danneggiare il sito o i suoi utenti...etc.
Per non parlare di eventuali problemi di avere sul proprio server file di immagini coperte da diritto d'autore...
Davvero pensaci bene prima di voler fare una cosa del genere se la tua unica ragione è far risparmiare agli utenti quei due minuti di upload su imageshack.
10/12/2014 15:58:24 e modificato da pamela4e il 10/12/2014 16:27:13
<?php
$uploadpath = 'pages/immagini/'; // directory to store the uploaded files
$max_size = 6000; // maximum file size, in KiloBytes
$alwidth = 1000; // maximum allowed width, in pixels
$alheight = 1000; // maximum allowed height, in pixels
$allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png'); // allowed extensions
if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {
$uploadpath = $uploadpath . basename( $_FILES['fileup']['name']); // gets the file name
$sepext = explode('.', strtolower($_FILES['fileup']['name']));
$type = end($sepext); // gets extension
list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']); // gets image width and height
$err = ''; // to store the errors
// Checks if the file has allowed type, size, width and height (for images)
if(!in_array($type, $allowtype)) $err .= 'The file: <b>'. $_FILES['fileup']['name']. '</b> not has the allowed extension type.';
if($_FILES['fileup']['size'] > $max_size*6000) $err .= '<br/>Maximum file size must be: '. $max_size. ' KB.';
if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<br/>The maximum Width x Height must be: '. $alwidth. ' x '. $alheight;
// If no errors, upload the image, else, output the errors
if($err == '') {
if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) {
echo 'File: <b>'. basename( $_FILES['fileup']['name']). '</b> successfully uploaded:';
echo '<br/>File type: <b>'. $_FILES['fileup']['type'] .'</b>';
echo '<br />Size: <b>'. number_format($_FILES['fileup']['size']/1024, 3, '.', '') .'</b> KB';
if(isset($width) && isset($height)) echo '<br/>Image Width x Height: '. $width. ' x '. $height;
echo '<br/><br/>Image address: <b>http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['REQUEST_URI']), '/').'/'.$uploadpath.'</b>';
}
else echo '<b>Unable to upload the file.</b>';
}
else echo $err;
}
?>
<div style="margin:1em auto; width:333px; text-align:center;">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
Upload File: <input type="file" name="fileup" /><br/>
<input type="submit" name='submit' value="Upload" />
</form>
così funziona m'ha dovendolo integrare con main?=page= non riesco a farlo andare.(il bello era che mi ridava il link all'immagine da integrare )
preferirei optare per il caricamento da pc, se qualcuno fosse cosìgentile da assistermi
11/12/2014 16:53:48 e modificato da pamela4e il 11/12/2014 16:54:38
ho copiato e tolto semplicemente la pagina modifica scheda per i permessi ma non capisco come mandare l'echo dell'url a url_img ( lo vedrete è in fondo ho fatto un commento nel codice per far capire dove) lo posto tuttocosì da evitare incomprensioni
<div class="pagina_schedam_odifica">
<?php /*HELP: */
if (isset($_REQUEST['pg'])===FALSE){
echo gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']);
} else {
/*Se ho ricevuto informazioni per modificare*/
$confirm_updating = true;
/** * Controllo sul file audio
* @author Blancks
*/
if ($PARAMETERS['mode']['allow_audio'] == 'ON')
{
if (!empty($_POST['modifica_url_media']) && !isset($PARAMETERS['settings']['audiotype']['.'.strtolower(end(explode('.', $_POST['modifica_url_media'])))]))
{
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['media_not_allowed']).'</div>';
$confirm_updating = false;
}
}elseif ($_POST['op']=='modify')
{
$_POST['modifica_url_media'] = '';
}
/** * Se non sono occorsi errori durante i controlli precedenti
* @author Blancks
*/
if ($confirm_updating)
{
if (isset($_POST['op'])===TRUE)
{
/** * Controllo sul bloccaggio dei suoni per l'utente
* @author Blancks
*/
$blocca_media = (strtolower($_POST['blocca_media'])=='on')? 1 : 0;
if ($_SESSION['login'] == $_REQUEST['pg'])
$_SESSION['blocca_media'] = $blocca_media;
/*Se l'utente ha richiesto di modificare la propria scheda*/
if((gdrcd_filter('get',$_REQUEST['pg'])==$_SESSION['login'])&&(gdrcd_filter('get',$_POST['op'])=='modify'))
{
/** * Html, BBcode or both ?
* @author Blancks
*/
$modifica_affetti = gdrcd_filter('in',$_POST['modifica_affetti']);
$modifica_background = gdrcd_filter('in',$_POST['modifica_background']);
if ($PARAMETERS['mode']['user_bbcode'] == 'OFF' || ($PARAMETERS['mode']['user_bbcode'] == 'ON' && $PARAMETERS['settings']['forum_bbcode']['type'] == 'bbd' &&$PARAMETERS['settings']['bbd']['free_html'] == 'ON'))
{
$modifica_affetti = gdrcd_filter('addslashes', $_POST['modifica_affetti']);
$modifica_background = gdrcd_filter('addslashes', $_POST['modifica_background']);
}
/** * Online status allowed ?
* @author Blancks
*/
$online_state = '';
if ($PARAMETERS['mode']['user_online_state']=='ON')
$online_state = gdrcd_filter('in', $_POST['online_state']);
gdrcd_query("UPDATE personaggio SET cognome = '".gdrcd_filter('in',$_POST['modifica_cognome'])."', affetti = '".$modifica_affetti."', descrizione = '".$modifica_background."', url_media = '".gdrcd_filter('in',$_POST['modifica_url_media'])."', blocca_media = ".(int)$blocca_media.", url_img = '".gdrcd_filter('in',$_POST['fileup'])."', url_img_chat = '".gdrcd_filter('in',$_POST['modifica_url_img_chat'])."', online_status = '".$online_state."' WHERE nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['modified']).'</div>';
/*Se un master o superiore ha richiesto di modificare lo status del pg*/
}elseif (($_SESSION['permessi']>=GUILDMODERATOR)&&(gdrcd_filter('get',$_POST['op'])=='modify_status'))
{
gdrcd_query("UPDATE personaggio SET stato = '".gdrcd_filter('in',$_POST['modifica_status'])."', salute = ".gdrcd_filter('num',$_POST['modifica_salute'])." WHERE nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['modified']).'</div>';
/*Se un master o superiore ha richiesto l'arresto del pg*/
}elseif (($_SESSION['permessi']>=GAMEMASTER)&&(gdrcd_filter('get',$_POST['op'])=='arrest'))
{
/** * Da implementare */
/*Se un admin o superiore ha richiesto l'esilio dell'utente*/
}elseif (($_SESSION['permessi']>=GAMEMASTER)&&(gdrcd_filter('get',$_POST['op'])=='exile'))
{
gdrcd_query("UPDATE personaggio SET esilio = '".gdrcd_filter('num',$_POST['year']).'-'.gdrcd_filter('num',$_POST['month']).'-'.gdrcd_filter('num',$_POST['day'])."', data_esilio=NOW(), autore_esilio = '".$_SESSION['login']."', motivo_esilio = '".gdrcd_filter('in',$_POST['causale'])."' WHERE nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' AND permessi <=".$_SESSION['permessi']."");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['done']).'</div>';
}else
{
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_operation']).'</div>';
}
} else
{
/*Carico le informazioni del PG*/
$record = gdrcd_query("SELECT descrizione, affetti, cognome, online_status, url_img, url_img_chat, url_media, blocca_media, stato, salute FROM personaggio WHERE nome='".gdrcd_filter('get',$_REQUEST['pg'])."'");
}
}
?>
<div class="page_title">
<h2><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['page_name']); ?></h2>
</div>
<div class="page_body">
<?php if(isset($_POST['op'])===FALSE) { ?>
<div class="panels_box">
<?php
if ($_SESSION['login']==$_REQUEST['pg']){
?>
<?php
/** * Avatar di chat
* @author Blancks
*/
if ($PARAMETERS['mode']['chat_avatar']=='ON')
{
?>
<?php
}
?>
<?php
if ($PARAMETERS['mode']['user_online_state']=='ON')
{
?>
<?php
}
?>
<?php
if ($PARAMETERS['mode']['allow_audio'] == 'ON')
{
?>
<?php
}
?>
</div>
<?php
}//if
if($_SESSION['permessi']>=GUILDMODERATOR){
?>
<div class='form_gioco'>
<!-- Form master status -->
</form>
<!-- Form master esilio -->
</form>
</div>
<?php
}//if
?>
</div>
<?php
}//else
}//if?>
<?php
$uploadpath = 'pages/immagini/'; // directory to store the uploaded files
$max_size = 6000; // maximum file size, in KiloBytes
$alwidth = 1000; // maximum allowed width, in pixels
$alheight = 1000; // maximum allowed height, in pixels
$allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png'); // allowed extensions
if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {
$uploadpath = $uploadpath . basename( $_FILES['fileup']['name']); // gets the file name
$sepext = explode('.', strtolower($_FILES['fileup']['name']));
$type = end($sepext); // gets extension
list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']); // gets image width and height
$err = ''; // to store the errors
// Checks if the file has allowed type, size, width and height (for images)
if(!in_array($type, $allowtype)) $err .= 'The file: <b>'. $_FILES['fileup']['name']. '</b> not has the allowed extension type.';
if($_FILES['fileup']['size'] > $max_size*6000) $err .= '<br/>Maximum file size must be: '. $max_size. ' KB.';
if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<br/>The maximum Width x Height must be: '. $alwidth. ' x '. $alheight;
// If no errors, upload the image, else, output the errors
if($err == '') {
if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) {
echo 'File: <b>'. basename( $_FILES['fileup']['name']). '</b> successfully uploaded:';
echo '<br/>File type: <b>'. $_FILES['fileup']['type'] .'</b>';
echo '<br />Size: <b>'. number_format($_FILES['fileup']['size']/1024, 3, '.', '') .'</b> KB';
if(isset($width) && isset($height)) echo '<br/>Image Width x Height: '. $width. ' x '. $height;
echo '<br/><br/>Image address: <b>http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['REQUEST_URI']), '/').'/'.$uploadpath.'</b>';
/***qua immagino dovrei mettere l'echo per il record**/
}
else echo '<b>Unable to upload the file.</b>';
}
else echo $err;
}
?>
<div style="margin:1em auto; width:333px; text-align:center;">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data" >
Upload File: <input type="file" name="fileup" /><br/>
<input type="submit" name='submit' value="Upload" />
</form>
</div>
<!-- Link a piè di pagina -->
<div class="link_back">
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('url',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
</div><!-- pagina -->
15/12/2014 11:03:06 e modificato da pamela4e il 16/12/2014 11:02:12
Ragazzi ho un idea su come risolvere la cosa però mi serve una mano, in pratica il sistema mi carica l'immagine e mi da un url in questo modo:
echo '<br/><br/>Image address: <b>http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['REQUEST_URI']), '\/').'/'.$uploadpath.'</b>';
Invece di mandarmelo in echo come faccio a sostituire il valore nel db url_img
17/12/2014 15:04:21
Grazie comunque del aiuto c'è l'ho fatta da solo.
posto il code
if($err == '') {
if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) {
echo 'File: <b>'. basename( $_FILES['fileup']['name']). '</b> successfully uploaded:';
echo '<br/>File type: <b>'. $_FILES['fileup']['type'] .'</b>';
echo '<br />Size: <b>'. number_format($_FILES['fileup']['size']/1024, 3, '.', '') .'</b> KB';
if(isset($width) && isset($height)) echo '<br/>Image Width x Height: '. $width. ' x '. $height;
$a=('http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['REQUEST_URI']), '\/').'/'.$uploadpath.'');
gdrcd_query("UPDATE personaggio SET url_img='".$a."' WHERE nome = '".$_SESSION['login']."'");
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
New Orleans ↗
Raja Dunia ↗
Tiles Survive ↗
CRSED: F.O.A.D. ↗
Foundation Galactic Frontier ↗
Tibia ↗
Exclusive Villa GdR ↗