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

Problema apostrofo su database MySQL...

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Avatar utente
Sir Xiradorn
Grafico
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...

Messaggio da Sir Xiradorn » 22/10/2015, 12:27

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

Codice: Seleziona tutto

$nome = $_POST['nome'];
// IL codice lo mettiamo qua
$result = mysql_query ( " UPDATE tabellaschede SET nome = '$nome' WHERE idscheda=102 " );
ho messo un commento dove va inserito il codice
1) \'

Codice: Seleziona tutto

$nome = mysql_real_escape_string($nome);
2) '

Codice: Seleziona tutto

$nome = filter_var($nome, FILTER_SANITIZE_STRING);
o anche ad esempio per una sorta di retrocompatibilità

Codice: Seleziona tutto

$none = htmlentities($nome, ENT_QUOTES);
oppure (leggermente sconsigliato però)

Codice: Seleziona tutto

$none = htmlspecialchars($nome, ENT_QUOTES);  
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
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

pollat
Utente
Utente
Messaggi: 20
Iscritto il: 09/04/2014, 20:43

Re: Problema apostrofo su database MySQL...

Messaggio da pollat » 22/10/2015, 17:08

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
ecco questa era lì'altra cosa che volevo sapere: come dovrei fare per utilizzare le nuove PDO ???

per il resto grazie mille!!!!

Avatar utente
Sir Xiradorn
Grafico
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...

Messaggio da Sir Xiradorn » 22/10/2015, 17:54

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)

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();
}
Ora devi solo fare così.

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 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
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Baidu [Spider] e 23 ospiti