Pagina 1 di 1

nuovo utente, problema PHP

Inviato: 25/03/2008, 18:55
da buso71
Intanto salve a tutti!
Sono un nuovo utente, ho installato da poco oscommerce-2.2rc2a e dopo averci lavorato un po' ho ottenuto una veste grafica che mi piaceva, poi ho iniziato a fare delle prove e dopo aver modificato il prodotto e fatto il preview ottengo sempre l'errore
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in d:\xxxxx\admin\includes\functions\database.php on line 136

Warning: Cannot modify header information - headers already sent by (output started at d:\xxx\includes\functions\database.php:136) in d:\xxxxx\admin\includes\functions\general.php on line 22
se ho una sola lingua installata ottengo la prima frase una volta se ne ho due 2 e così via, cioè ottengo il primo messaggio per ogni lingua installata.

Ho provato a reinstallare tutto, ho provato pure con OsWai Ver 616 (molto bello) , ho provato con una installazione pulita, ma ottengo sempre lo stesso messaggio.
La cosa strana è che poi il prodotto viene comunque aggiornato.
Cercando in rete non ho trovato una soluzione (anche perchè di php capisco poco niente e di sql ancora meno), qualcuno ha avuto il medesimo problema e sa aiutarmi?
Graziemille
Federico

Inviato: 25/03/2008, 22:33
da buso71
a forza di sbatterci la testa ho trovato la soluzione.

il codice a cui faceva riferimento si trova nel file \admin\includes\functions\database.php
ed è è il seguente

Codice: Seleziona tutto

  function tep_db_input($string, $link = 'db_link') {
  global $$link;

    if (function_exists('mysql_real_escape_string')) {
      return mysql_real_escape_string($string,$$link);
    } elseif (function_exists('mysql_escape_string')) {
      return mysql_escape_string($string);
    }
    return addslashes($string);
  }
e non ho capito perchè dava errore,comunque navigando ho scoperto due cose:
1) se metti come stringa di ricerca il primo messaggio di warning trovi un sacco di siti che hanno tale errore talmente "consolidato" che è diventato parte integrante nei motori di ricerca.

provate a cercare
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given
e vedrete quanti siti trovate che lo hanno nella homepage

2) che sto pezzo di codice è una soluzione per un problema di una vecchia versione di osCommerce ed il codice originale era senza controlli

alla fine ho provato a togliere i controlli (dato che riflettendo un po' il controllo era un po' in sovrappiù dato che lì e nelle altre parti dove viene usasto l'input può solo essere quello)
ed il codice che ho ottenuto è il seguente

Codice: Seleziona tutto

  function tep_db_input($string, $link = 'db_link') {
 
    return addslashes($string);
  }
ora sto provando e non mi da errori.
il medesimo file in \includes ( e non in admin\includes\ ) non l'ho modificato e va tutto ok al 100%...
al momento