phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
Problema apostrofo su database MySQL...
Problema apostrofo su database MySQL...
Ho un problema con il mio database MySQL, inserisco i valori nel database tramite modulo su pagina php ma se inserisco una frase con apostrofo il database non registra la frase inserita.
Credo che capiti perchè il database MySQL li vede come apici e quindi non li registra, so che basta inserire \' per inserire l'apostrofo ma vorrei sapere se esiste un metodo per far accettare direttamente l'apostrofo come in una frase normale.
grazie in anticipo.
Credo che capiti perchè il database MySQL li vede come apici e quindi non li registra, so che basta inserire \' per inserire l'apostrofo ma vorrei sapere se esiste un metodo per far accettare direttamente l'apostrofo come in una frase normale.
grazie in anticipo.
- Sir Xiradorn
- Grafico
- Messaggi: 1659
- Iscritto il: 11/08/2009, 12:41
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.15
- Database: MariaDB 10.1.9
- Località: Lontano....
- Contatta:
Re: Problema apostrofo su database MySQL...
Devi usare l'escaping per fare si che l'apostrofo diventi da ' a \'
Sir Xiradorn
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
Re: Problema apostrofo su database MySQL...
si questo lo so ma mi serve un metodo che faccia tutto in automatico e accetti normalmente l'apostrofo
- Sir Xiradorn
- Grafico
- Messaggi: 1659
- Iscritto il: 11/08/2009, 12:41
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.15
- Database: MariaDB 10.1.9
- Località: Lontano....
- Contatta:
Re: Problema apostrofo su database MySQL...
Allora esistono molte funzioni che ti permettono di fare l'escape.
Puoi usare ad esempio il mysql_real_escape_string
Una soluzione semplice e veloce ma questa sta per essere non compatibile con la versione 7 di php che sta sostituendo le funzioni mysql e compagnia bella con le PDO
Una soluzione può ancora essere la seguente ovvero htmlspecialchars
Se poi cuoi il classico slash prima dell'apostrofo ovvero \' puoi usare addslashes ma è poco elegante. In ogni caso funge tranquillamente
Dipende dove lo devi usare
Puoi usare ad esempio il mysql_real_escape_string
Codice: Seleziona tutto
$stringa_con_escape = mysql_real_escape_string($stringa)
Una soluzione può ancora essere la seguente ovvero htmlspecialchars
Codice: Seleziona tutto
$stringa_con_escape = htmlspecialchars($stringa, ENT_QUOTES)
Codice: Seleziona tutto
$stringa_con_slash = addslashes($stringa)
Sir Xiradorn
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
Re: Problema apostrofo su database MySQL...
Lo devo usare nel form che i clienti utilizzano per modificare i dati del database, di default i campi del form presentano i dati già presenti nel database che il cliente può modificare e cliccando salva finiscono aggiornati nel database.
Adesso se qualcuno immette un dato con apostrofo il dato non viene aggiornato, per cui vorrei un metodo semplice per permettere al cliente di aggiungere un dato con apostrofo (insomma in modo che funzioni automaticamente senza dovergli dire "aggiungi il backslash prima dell'apostrofo")
Adesso se qualcuno immette un dato con apostrofo il dato non viene aggiornato, per cui vorrei un metodo semplice per permettere al cliente di aggiungere un dato con apostrofo (insomma in modo che funzioni automaticamente senza dovergli dire "aggiungi il backslash prima dell'apostrofo")
- Sir Xiradorn
- Grafico
- Messaggi: 1659
- Iscritto il: 11/08/2009, 12:41
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.15
- Database: MariaDB 10.1.9
- Località: Lontano....
- Contatta:
Re: Problema apostrofo su database MySQL...
Te l'ho scritto sopra. Quando ricevi il dato dal campo di testo della form filtri quel dato e poi li invii nel db. Il tuo cliente non deve preoccuparsi di mettere \' ma solo e soltanto '. Il codice farà il lavoro sporco.
Se posti il codice che usi nella form, ti faccio capire
Se posti il codice che usi nella form, ti faccio capire
Sir Xiradorn
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
Re: Problema apostrofo su database MySQL...
Sir Xiradorn ha scritto:Te l'ho scritto sopra. Quando ricevi il dato dal campo di testo della form filtri quel dato e poi li invii nel db. Il tuo cliente non deve preoccuparsi di mettere \' ma solo e soltanto '. Il codice farà il lavoro sporco.
Se posti il codice che usi nella form, ti faccio capire
Questo è il form:
Codice: Seleziona tutto
<form name="form_modifica_dati" method="post" action="pagina_scheda_102.php">
<input
type="text"
class="editabile"
value="<? $result = mysql_query ( " SELECT * FROM tabellaschede WHERE idscheda=102" ) or die ( mysql_error() ); WHILE ( $row= mysql_fetch_array($result)) echo $row[gruppo] ?>"
name="gruppo"
>
<input type="submit" name="modifica_dati_102" value="Salva">
</form>
considera che nel file "pagina_scheda_102.php" (dove vengono spediti i dati del form), c'è il codice che li inserisce nel database, ossia:
Codice: Seleziona tutto
<!-- Script php per aggiornamento dati scheda -->
<?php
// Controllo che il form sia stato inviato
if (isset($_POST['modifica_dati_102']) )
{
// Collegamento al database
include ( 'connessione_database.php' );
// aggiornamento campo nome
$nome = $_POST['nome'];
$result = mysql_query ( " UPDATE tabellaschede SET nome = '$nome' WHERE idscheda=102 " );
// aggiornamento campo gruppo
$gruppo = $_POST['gruppo'];
$result = mysql_query ( " UPDATE tabellaschede SET gruppo = '$gruppo' WHERE idscheda=102 " );
}
?>
ma poi nel database i dati come appaiono con o senza slash ?
Ossia se un cliente scrive l'Aquila nel database ci finisce l'Aquila o l\'Aquila???
- Sir Xiradorn
- Grafico
- Messaggi: 1659
- Iscritto il: 11/08/2009, 12:41
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.15
- Database: MariaDB 10.1.9
- Località: Lontano....
- Contatta:
Re: Problema apostrofo su database MySQL...
Nel database deve finirci qualcosa di uno dei due tipi che ti elenco sotto
- l\'Aquila
- l'Aquila o anche l'Aquila (sono equivalenti solo che uno è un valore Alphanumerico l'altro è Unicode ma ai fini so la stessa cosa)
Quando poi lo si rispara a video la stringa sarà mostrata come l'Aquila. Hai quindi due maniere di farlo e io ti consiglio la seconda e che ti da la cosa che ho scritto nella seconda voce. Ma te le dico entrambe e lo scrivo solo per una voce poi tu lo adatti per le altre.
Individuiamo la stringa da modificare
ho messo un commento dove va inserito il codice
1) \'
2) '
o anche ad esempio per una sorta di retrocompatibilità
oppure (leggermente sconsigliato però)
Un consiglio se non sei su phpbb e stai sviluppando tu una form usa non le vecchie funzioni mysql_* ma le nuove PDO che sono contro le sql jnjection
- l\'Aquila
- l'Aquila o anche l'Aquila (sono equivalenti solo che uno è un valore Alphanumerico l'altro è Unicode ma ai fini so la stessa cosa)
Quando poi lo si rispara a video la stringa sarà mostrata come l'Aquila. Hai quindi due maniere di farlo e io ti consiglio la seconda e che ti da la cosa che ho scritto nella seconda voce. Ma te le dico entrambe e lo scrivo solo per una voce poi tu lo adatti per le altre.
Individuiamo la stringa da modificare
Codice: Seleziona tutto
$nome = $_POST['nome'];
// IL codice lo mettiamo qua
$result = mysql_query ( " UPDATE tabellaschede SET nome = '$nome' WHERE idscheda=102 " );
1) \'
Codice: Seleziona tutto
$nome = mysql_real_escape_string($nome);
Codice: Seleziona tutto
$nome = filter_var($nome, FILTER_SANITIZE_STRING);
Codice: Seleziona tutto
$none = htmlentities($nome, ENT_QUOTES);
Codice: Seleziona tutto
$none = htmlspecialchars($nome, ENT_QUOTES);
Sir Xiradorn
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
Re: Problema apostrofo su database MySQL...
ecco questa era lì'altra cosa che volevo sapere: come dovrei fare per utilizzare le nuove PDO ???Sir Xiradorn ha scritto: Un consiglio se non sei su phpbb e stai sviluppando tu una form usa non le vecchie funzioni mysql_* ma le nuove PDO che sono contro le sql jnjection
per il resto grazie mille!!!!
- Sir Xiradorn
- Grafico
- Messaggi: 1659
- Iscritto il: 11/08/2009, 12:41
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.15
- Database: MariaDB 10.1.9
- Località: Lontano....
- Contatta:
Re: Problema apostrofo su database MySQL...
Facile devi solo cambiare le tue funzioni con le nuove. La cosa bella è che sono multi database quindi diciamo che non ti importa moltissimo se cotruisci una funzione per mysql ma puoi riusarla anche su mariadb o oracle ad esempio. Una manna dal celo per gli sviluppatori. Ma facciamo qualche esempio semplice e solo per capirci.
Per fare una connessione al db prima facevi una cosa del tipo (su mysql)
Ora devi solo fare così.
E questo è una osa meravigliosa. Perchè vuoi cambiare le tue funzioni per mysqli? Prima dovevi editare tutte le funzioni. Ora invece ti basta solo far connettere il PDO al nuovo tipo di db e hai fatto.
E non devi manco chiude la connessione ma ti basta solo distruggere l'oggetto per non avere più problematiche.
EDIT: ho Editato il codice ora è corretto ci stava qualche imperfezione. Ma è solo per capirci
Per fare una connessione al db prima facevi una cosa del tipo (su mysql)
Codice: Seleziona tutto
/**
* Connessione al db con le vecchie funzioni
*/
$hostname = "localhost";
$username = "root";
$passwond = "toor";
$database = "database";
$attiva = false;
if (!$attiva) {
if($cnt = @mysql_connect($hostname, $username, $passwond) or die()) {
$db = @mysql_select_db($database, $cnt);
if ($db) {
$attiva = true;
}
}
}
// codice e operazioni varie
if ($attiva) {
@mysql_close($db) or die();
}
Codice: Seleziona tutto
/**
* Connessione al db con le NUOVE funzioni
*/
$dbtype = "mysql";
$hostname = "localhost";
$username = "root";
$passwond = "toor";
$database = "database";
if (in_array($dbtype, PDO::getAvailableDrivers())) {
try {
$db = new PDO ("$dbtype:host=$hostname;dbname=$database;charset=utf8", $username, $passwond);
} catch (PDOException $e) {
echo $e->getMessage();
}
}
// codice e operazioni varie
unset($db);
E non devi manco chiude la connessione ma ti basta solo distruggere l'oggetto per non avere più problematiche.
EDIT: ho Editato il codice ora è corretto ci stava qualche imperfezione. Ma è solo per capirci
Sir Xiradorn
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti