Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: errore sintassi?

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    152

    errore sintassi?

    Scusate, mi dite se c'è qualcosa di errato nella sintassi di questo ciclo:

    codice:
    $i=0;
    		$n=0;
    		foreach($_GET[campi] as $value){
    
    		$temp = $_GET["query_".$value]; 
    		
    		$s=0;
    		foreach($temp as $v) {
    
    		
    		$arr_temp = explode('|', $v);
    		
    		$str_prod = $arr_temp[0].'|'.$arr_temp[1].'|'.$arr_temp[2].'|'.$arr_temp[3].'|'.$arr_temp[4];
    		$prodotti[$i][$n] = $str_prod;
    		$db_prod[] = $str_prod;
    
    		$n++;
    		}
    		
    		$i++;
    		}

    ha sempre funzionato, ora ho cambiato hosting e non funzia
    più.
    comunque...la cacca la fa chiunque!...;-)

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Non so se e' esatto ma una volta mi e' capitato che il foreach rifiutasse il $_GET['']. Prova a fare prima $campi = $_GET['campi'] e poi mettere $campi nel ciclo.

  3. #3
    un errore di sintassi ti da un parser error e t indica pure la riga. qual è?
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    152
    grazie, risolto.. nn facevo il controllo sull'esistenza dell'array "prodotti", quindi dava errore sul ciclo foreach di quell'array.

    grazie cmq
    comunque...la cacca la fa chiunque!...;-)

  5. #5
    guarda che quando usi gli array hash (ovvero con chiave testuale) devi mettere la chiave tra apici (singoli o doppi) altrimenti php ti da errore (errore che non vedi perché saranno sicuramente nascosti ma prova a mettere un bel error_reporting(E_ALL); subito dopo l'apertura di php e vedi quanta roba ti spunta )

  6. #6
    Originariamente inviato da daniele_dll
    guarda che quando usi gli array hash (ovvero con chiave testuale) devi mettere la chiave tra apici (singoli o doppi) altrimenti php ti da errore (errore che non vedi perché saranno sicuramente nascosti ma prova a mettere un bel error_reporting(E_ALL); subito dopo l'apertura di php e vedi quanta roba ti spunta )
    Ma da quando?
    Mai avuto errori usando array senza apici e sempre funzionati tutti. Io li metto sempre perchè arrivo da un altro linguaggio di programmazione e ormai li metto senza pensarci ma sono completamente inutili in realtà.

  7. #7
    ooopss... Daniele ha (quasi) sempre ragione....


    non ci vanno se l'indice e' numerico, mentre se e' associativo e non metti gli apici potrebbe causare errore perche' l'indice verrebbe scambiato per una COSTANTE. Nel caso che la costante con lo stesso nome non ci sia, php che e' un buono, assume che sia una stringa e si limita ad inviare un NOTICE. Ma se la costante fosse presente userebbe quella.... con tutto quel che ne potrebbe conseguire.

    Sarebbe un autentico "bug" dello script.



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Originariamente inviato da piero.mac
    ooopss... Daniele ha (quasi) sempre ragione....


    non ci vanno se l'indice e' numerico, mentre se e' associativo e non metti gli apici potrebbe causare errore perche' l'indice verrebbe scambiato per una COSTANTE. Nel caso che la costante con lo stesso nome non ci sia, php che e' un buono, assume che sia una stringa e si limita ad inviare un NOTICE. Ma se la costante fosse presente userebbe quella.... con tutto quel che ne potrebbe conseguire.

    Sarebbe un autentico "bug" dello script.


    io ho sempre ragione :098:

    ho infatti precisato nel mio post che ci vanno solo quando ci sta la chiave testuale

    Originariamente inviato da platone
    Ma da quando?
    Mai avuto errori usando array senza apici e sempre funzionati tutti. Io li metto sempre perchè arrivo da un altro linguaggio di programmazione e ormai li metto senza pensarci ma sono completamente inutili in realtà.
    tu dici che sono completamente inutili? ah beh ... prova a mettere all'inizio delle tue pagine o del tuo file di configurazione un bel

    error_reporting(E_ALL);

    dopo di che togli tutit gli apici ... e poi mi conti gli errori che ha trovato

    e non solo quelli ma anche di variabili o chiavi non inizializzate

    questi sono gli errori più "piccoli" ma i più pericolosi dati che insieme a register_global a on permettono di fare molti danni

  9. #9
    Dipende da come programmi.

    Ricordati che register global può fare male solo se non sei capace di inizializzare le variabili (oppure se sei troppo pigro!!!!).
    Basterebbe inserire i controlli e tutte le inizializzazioni, PUNTO. Poi chiaramente è molto più facile essere protetti a priori e sono d'accordo. Però se sei un buon programmatore, con o senza register globals gli script sono indistruttibili.

    Per quanto riguarda invece il mancato utilizzo degli apici si tratta di un NOTICE nemmeno di un WARNING o di un ERROR, cioè ti avvisa che stai usando una cosa inadeguatamente. Tuttavia se apri molti script scoprirai che moltissimi fanno uso della versione senza apici (io no, già te l'ho detto che sono solito inserirli perchè arrivo da altri linguaggi) e ti parlo di script fatti da programmatori esperti.

    Poi per carità, che sia una leggerezza facilmente evitabile è la pura e santa verità...

  10. #10
    ti assicuro che un NOTICE è un'errore a tutti gli effetti ... se in un while provi a usare una variabile non inizializzata per provare a sbloccare una cosa ... non funziona correttamente quella parte e può essere che neanche te ne accorgi

    per il discorso register global ... mi spiace ... ma devo dirti che non è esattamente cosi ... ci sono seri rischi e ci sono sempre perché tu non puoi verificare TUTTE le variabili che usi per vedere se sono state precedentemente inizializzate sfruttando le possibilità che il register global da all'attaccante ... e non si tratta di essere bravi si tratta di cose che non si posso fare in pratica, forse, solo nella teoria

    vorrebbe dire che dopo che scrivi TUTTO il software e finisci TUTTO ... te lo riprendi da zero e metti tutti i controlli necessari per verificare che tutte le variabili che usi siano non inizializzate a priori ... e spero come tu ti renda conto non è una cosa fattibile per questioni economiche ... se perdi un mese a scrivere un software e 2 settimane a verificare che le variabili siano in un certo modo ... quando disabilitando il register global il problema non lo hai ... e quindi risparmi 2 settimane di lavoro ... beh ... come dire c'è un certo guadagno

    come c'è anche l'orrida abitudine di usare la funzione interna global ... argh ... anche questa cosa qua è qualcosa di tremendamente lenta e pesante (letto in un libro scritto da uno degli autori di php, chiedi anche a gm) ... a parte che è cattiva progettazione fare una cosa del genere e viene ridotto anche il controllo che uno ha sui dati in ingresso ... ma se proprio devi ... tanto vale utilizzare l'array superglobale $GLOBALS che contiene TUTTE le variabili inizializzate all'esterno di funzioni e metodi ... che è infinitamente più veloce ... ma comunque è cattiva progettazione fare una cosa del genere

    Ad esempio l'uso delle variabili globali riduce tremendamente anche la facilità di riutilizzo del codice ... tramite le classi ben progettate e possibile far si che il proprio codice possa essere preso cosi com'è e spostato senza modificare una riga di codice per farlo funzionare

    ci sono tante cose in ballo che di solito vengono tutte a cascata ^^

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.