stavo cercando un modo qua sul forum su come inserire delle immagini sul db ne ho letti un po alla fine ne ho preso uno e lo sistemato a modo mio
l'unica parte che non ho capito è $contenuto = addslashes(file_get_contents($nome_temporaneo)); perchè abbiamo bisogno di questa stringa per memorizzare i file ho cercato in giro è il massimo che sono riuscito a capire è che addslashes:(questa funzione può essere utilizzata per preparare una stringa per la memorizzazione in un database e query di database)Codice PHP:
<?php
require('db.php');
if(isset($_POST["carica"])){
$nome_temporaneo = $_FILES['file']['tmp_name'];
$nome = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$tipo = $_FILES['file']['type'];
$contenuto = addslashes(file_get_contents($nome_temporaneo));
$sql="insert into upload (nome,size,tipo,file)VALUES('$nome','$size','$tipo','$contenuto')";
if ($con->query($sql) === TRUE) {
echo "inserita";
} else {
echo "Errore: " . $sql . "<br>";
}
}
?>
<form action="" name="File" method="post">
<table border="0">
<tr>
<td>Carica un file:</td>
</tr>
<tr>
<td><input class="text" type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" name="carica" value="carica"></td>
</tr>
</table>
</form>
In realtà, più che addslashes sarebbe più corretto usare $mysqli->escape_string() (nel tuo caso, $conn->escape_string()).
(fonte)The addslashes() is sometimes incorrectly used to try to prevent SQL Injection. Instead, database-specific escaping functions and/or prepared statements should be used.
Il tutto serve per evitare sql injection (è un tipo di attacco che si può subire nelle applicazioni che comunicano con il database, in particolare nelle SELECT ma ti consiglio di usarlo sempre: qualsiasi dato prelevi dai form che va in una query, fallo passare tramite quella funzione).
Ciao!
Ultima modifica di alemoppo : 14-05-2018 alle ore 20.52.33
regolamento altervista_______________ regolamento forum
mi basta inserire $directory=... e me la salva su una cartella?
No, se vuoi salvarlo in una cartella devi usare la funzione move_uploaded_file()
Trovi molto materiale sul forum, oppure vedi anche qui.
Ciao!
regolamento altervista_______________ regolamento forum
perchè adesso dice Undefined index: isset c'è e il codice è sempre quello
Debugga, controlla se passi il dato con quell'indice che è nell'errore, se esiste effettivamente nel form.
Ciao!
regolamento altervista_______________ regolamento forum
niente ho riscritto il codice riavviato piu volte ma sempre quell errore
Notice: Undefined index: files in C:\xampp\htdocs\progetto\eco\vendita1.php on line 4
Notice: Undefined index: files in C:\xampp\htdocs\progetto\eco\vendita1.php on line 5
Notice: Undefined index: files in C:\xampp\htdocs\progetto\eco\vendita1.php on line 6
Notice: Undefined index: files in C:\xampp\htdocs\progetto\eco\vendita1.php on line 7
Warning: file_get_contents(): Filename cannot be empty in C:\xampp\htdocs\progetto\eco\vendita1.php on line 8
inserita
Nel codice che hai scritto prima, vedo:
Dall'errore, vedo che hai scritto 'files'.Codice PHP:
$_FILES['file'][...];
Controlla cosa hai scritto nel campo name del form nell'input type="file" e adattalo al PHP di conseguenza (oppure modificalo sul form: devono coincidere).
Ciao!
regolamento altervista_______________ regolamento forum
sempre lo stessoCodice PHP:
<?php
require('db.php');
if(isset($_POST["carica"])){
$nome_temporaneo = $con->escape_string ($_FILES['file']['tmp_name']);
$nome = $con->escape_string($_FILES['file']['name']);
$size = $_FILES['file']['size'];
$tipo = $_FILES['file']['type'];
$contenuto = addslashes(file_get_contents($nome_temporaneo));
$sql="insert into upload (nome,size,tipo,file)VALUES('$nome','$size','$tipo','$contenuto')";
if ($con->query($sql) === TRUE) {
echo "inserita";
} else {
echo "Errore: " . $sql . "<br>";
}
}
?>
<form action="" name="File" method="post">
<table border="0">
<tr>
<td>Carica un file:</td>
</tr>
<tr>
<td><input class="text" type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" name="carica" value="carica"></td>
</tr>
</table>
</form>
Ultima modifica di alemoppo : 14-05-2018 alle ore 23.22.37 Motivo: +tag
Nel form, specifica:(quando vuoi usare $_FILES)Codice:enctype="multipart/form-data"
Ciao!
regolamento altervista_______________ regolamento forum
Ciao per provare ho fatto questo
ma in quale cartella lo invia?(in localhost e su altervista)Codice PHP:
<form name="carica" method="post" enctype="multipart/form-data">
<td><FONT Color="Blue" Face="Comic sans ms">Carica la foto dell'oggetto:</font></td>
<td><input class="text" type="file" name="file"></td>
</tr>
</table></center>
<center><input type="submit" name="carica" value="carica"><center>
</form>
</body>
</html>
<?php
require('db.php');
if(isset($_POST['carica'])){
$nome_temporaneo = $_FILES['file']['tmp_name'];
$nome = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$tipo = $_FILES['file']['type'];
$contenuto = addslashes(file_get_contents($nome_temporaneo));
if (move_uploaded_file($nome_temporaneo, $nome)) {
echo 'File inviato con successo.';
}else{
//Se l'operazione è fallta...
echo 'Upload NON valido!';
}
}
?>
e un altra cosa stavo ripassando un po e volevo chiederti quando usiamo e a cosa serve<a href"ciao.php?....">
ma ci possono essere due associazioni consecutive?
Cosa intendi con associazioni consecutive? Lo script comunque provandolo funziona, carica il file nella stessa cartella dello script.
Vedi qui.
Ciao!
Ultima modifica di alemoppo : 26-05-2018 alle ore 23.41.20
regolamento altervista_______________ regolamento forum
Beh sì, dopo la registrazione puoi mostrare la pagina per acquistare prodotti, quindi mostrarli. Non ho ben capito il blocco "comprare": dopo che l'utente si è registrato puoi mostrargli immediatamente i prodotti da acquistare.
Non ho capito.
Ciao!
regolamento altervista_______________ regolamento forum
Ma se tolgo l'associazione comprare non viene fuore che gli utenti registrano ogetti?
riguardo al href intendo perchè mettiamo il ? ad esempio <a href compra.php?elimina>
Calma. Cosa intendi con associazione? Intendi foreign key nel database? Si tratta solamente di una gestione dei dati.
Il simbolo "?" indica che da lì in poi verranno passati parametri di tipo GET.riguardo al href intendo perchè mettiamo il ? ad esempio <a href compra.php?elimina>
Ad esempio, richiamando questo script:
Si avrà rispettivamente:Codice PHP:
<?php
if(isset($_GET['parametro1']))
echo 'Hai inviato un parametro con valore: '.$_GET['parametro1'];
else echo 'Hai richiamato la pagina senza alcun parametro get!';
È possibile passare anche più di un parametro, separati con il simbolo "&":Codice:tuapagina.php?parametro1=ciaociao lo script risponderà: Hai inviato un parametro con valore: ciaociao tuapagina.php lo script risponderà: Hai richiamato la pagina senza alcun parametro get!
In questo modo, un'unica pagina PHP può avere più funzioni relativamente al parametro (es può essere una pagina di login piuttosto che di registrazione piuttosto che di gestione utenti etc).Codice:tuapagina.php?parametro1=valore1¶metro2=valore2
Ciao!
Ultima modifica di alemoppo : 28-05-2018 alle ore 17.35.20
regolamento altervista_______________ regolamento forum
ciao io ho queste due tabelle
oggetti (codice(pri),nome,tipo,nome,quantita,prezzo)
carrello (nome,prezzo,quantita,codicec(pri),codice(mull))
il problema che i dati del nome e il prezzo sono uguali a quelli della tabella oggetti non si crea ridondanza cosi?
Sì, infatti quei campi non dovrebbero esserci. Il carrello dovrebbe essere piuttosto qualcosa come:
Dove codice_oggetto è una chiave esterna che fa riferimento al codice di un oggetto.Codice:carrello ( id INT PRIMARY KEY, codice_oggetto INT NOT NULL, quantita INT UNSIGNED NOT NULL );
Non dovresti anche memorizzare l'informazione dell'utente che "possiede" quel carrello?
I suggerimenti che do più spesso:
- Le funzioni mysql_* non fanno più parte di PHP. Usa PDO o MySQLi.
- Il supporto a PHP 5.x è cessato l'1 gennaio 2019, e con esso le funzioni mysql_*. Che ti piaccia o no.
- Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
- Indenta correttamente il codice e usa nomi significativi per gli identificatori.
si l'utente gli e lo messo ,ma volevo fare vedere a video cosa ha comprato per questo il nome
Devi usare una JOIN:
Codice:SELECT * FROM carrello JOIN on oggetti WHERE carrello.codice_oggetto = oggetto.codice;
I suggerimenti che do più spesso:
- Le funzioni mysql_* non fanno più parte di PHP. Usa PDO o MySQLi.
- Il supporto a PHP 5.x è cessato l'1 gennaio 2019, e con esso le funzioni mysql_*. Che ti piaccia o no.
- Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
- Indenta correttamente il codice e usa nomi significativi per gli identificatori.
risolto grazie
Ultima modifica di esami : 30-05-2018 alle ore 23.15.22
quando carico i file su altervista tramine lo scipt quello che ho fatto sopra dove le salva le immaggini?
Se ti riferisci a questo:
Il file viene caricato nel percorso (relativo) indicato da $nome. Se non specifichi un vero percorso, ma solo il nome del file, esso viene salvato nella stessa cartella dello script PHP in esecuzione.Codice PHP:
if (move_uploaded_file($nome_temporaneo, $nome)) {
echo 'File inviato con successo.';
}
else {
echo 'Upload NON valido!';
}
I suggerimenti che do più spesso:
- Le funzioni mysql_* non fanno più parte di PHP. Usa PDO o MySQLi.
- Il supporto a PHP 5.x è cessato l'1 gennaio 2019, e con esso le funzioni mysql_*. Che ti piaccia o no.
- Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
- Indenta correttamente il codice e usa nomi significativi per gli identificatori.
@esami: ti chiedo gentilmente se puoi aprire un altro post se avrai eventuali altri problemi in quanto questo è diventato molto lungo e dispersivo (ad esempio alla tua ultima domanda avevo già risposto alla risposta #164).
Grazie.
Ciao!
regolamento altervista_______________ regolamento forum