Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    domanda su register_globals

    Salve a tutti tempo fa avevo uno script che mi permetteva di inserire degli utenti e di dare loro dei permessi.
    Ora l'ho ripreso ma non mi funzionava, non mi dava la possibilità di inserire i permessi.
    Poi ho settato register_globals a ON e mi funziona.
    La domanda è questa è opportuno tenere settato register_globals a ON?
    Premetto che ho PHP 5.2.5 e Apache 2.

    Posto anche lo script per dare idea a cosa sto lavorando

    Codice PHP:

    // inserisci permessi
        
    $aree $aree = array("news","articoli","convegni","incontri_ed_eventi");
        foreach (
    $aree as $area) {
    $ck_ins "$area"."_inserisci";
    $ck_mod "$area"."_modifica";
    $ck_can "$area"."_elimina";
    $ck_all "$area"."_allega";
    $ck_eliall "$area"."_eliminaall";
    $ck_vis "$area"."_visualizza";

    $
    $ck_ins = isset($$ck_ins);    
    $
    $ck_mod = isset($$ck_mod);
    $
    $ck_can = isset($$ck_can);
    $
    $ck_all = isset($$ck_all);
    $
    $ck_eliall = isset($$ck_eliall);
    $
    $ck_vis = isset($$ck_vis);    


            if ($
    $ck_all == "ok") { mysql_query("INSERT INTO permessi (idutente,sezione,azione) VALUES (".$id.",'".$area."','ins_allegati')"); }        
            if ($
    $ck_eliall == "ok") { mysql_query("INSERT INTO permessi (idutente,sezione,azione) VALUES (".$id.",'".$area."','canc_allegati')"); }
            if ($
    $ck_ins == "ok") {mysql_query("INSERT INTO permessi (idutente,sezione,azione) VALUES ($id,'".$area."','inserimento')");} 
            if ($
    $ck_mod == "ok") { mysql_query("INSERT INTO permessi (idutente,sezione,azione) VALUES (".$id.",'".$area."','modifica')"); }
            if ($
    $ck_can == "ok") { mysql_query("INSERT INTO permessi (idutente,sezione,azione) VALUES (".$id.",'".$area."','elimina')"); }
            if ($
    $ck_vis == "ok") { mysql_query("INSERT INTO permessi (idutente,sezione,azione) VALUES (".$id.",'".$area."','visualizza')"); }
       } 

  2. #2
    Assolutamente no.
    le register_globals prima o poi moriranno perché sono un attentato alla sicurezza (dovrebbero sparire col php6) oltre che produrre una illeggibilità del codice su progetti medio grandi.
    Fermo restando che di work-around ce ne sono per aggirare il problema, è una prassi assolutamente da evitare.

    Postilla: Io tra l'altro ho preso l'abitudine di programmare con error reporting a E_ALL, e devo dire che di bug nei miei progetti ce ne sono sempre meno. E' forse rognoso, ma si risparmia un sacco di tempo dopo nel debug.
    Questo per dirti: attenersi sempre alle direttive consigliate, anche se scomode.

  3. #3
    Ti ringrazio.
    Anche io ho error reporting a E_ALL e avevo register_globals settato a OFF
    Come potrei modificare il mio script al fine di evitare questo problema?

  4. #4

  5. #5
    Originariamente inviato da franco12345678
    scusami... è stato un week end intenso.
    Il tuo codice non l'ho capito =)

  6. #6
    mi dici cosa non hai capito?

  7. #7
    Codice PHP:
    $$ck_ins = isset($$ck_ins);     
    if ($
    $ck_ins == "ok"
    Come fa ad essere "ok" se tu la setti come variabile booleana (isset ritorno un bool)

  8. #8
    questo script l'ho trovato in rete.
    Ti posto il file che invia il form:
    Codice PHP:
     <?php $aree = array("news","articoli","convegni","incontri_ed_eventi"); ?>
                  <table border="0" cellspacing="1" cellpadding="1">
                    <tr>
                      <td width="150" height="20" align="center" bgcolor="#bec4d4">[B] Aree di gestione[/B]</td>
                      <td width="70" height="20" align="center" bgcolor="#bec4d4">[B]Inserisci[/B]</td>
                      <td width="70" height="20" align="center" bgcolor="#bec4d4">[B]Modifica[/B]</td>
                      <td width="70" height="20" align="center" bgcolor="#bec4d4">[B]Elimina[/B]</td>
                       <td width="70" height="20" align="center" bgcolor="#bec4d4">[B]Allega[/B]</td>
                        <td width="70" height="20" align="center" bgcolor="#bec4d4">[B]Elimina Allegato[/B]</td>
                      <td width="70" height="20" align="center" bgcolor="#bec4d4">[B]Visualizza[/B]</td>
                    </tr>
                    <?php foreach ($aree as $area) { ?>
                    <tr> 
                      <td width="150" align="left" bgcolor="D3D8E2">[b]<?php print strtr(ucfirst($area),"_"," "); ?>[/b]</td>
                      <td width="70" align="center" bgcolor="D3D8E2"><?php print "<input name=".$area."_inserisci " " type=checkbox id=".$area."_inserisci " "value='ok'>"?></td>
                      <td width="70" align="center" bgcolor="D3D8E2"><?php print "<input name=".$area."_modifica " " type=checkbox id=".$area."_modifica " "value=ok>"?></td>
                      <td width="70" align="center" bgcolor="D3D8E2"><?php print "<input name=".$area."_elimina " " type=checkbox id=".$area."_elimina " "value=ok>"?></td>
                      <td width="70" align="center" bgcolor="D3D8E2"><?php print "<input name=".$area."_allega " " type=checkbox id=".$area."_allega " "value=ok>"?></td>
                      <td width="70" align="center" bgcolor="D3D8E2"><?php print "<input name=".$area."_eliminaall " " type=checkbox id=".$area."_eliminaall " "value=ok>"?></td>
                      <td width="70" align="center" bgcolor="D3D8E2"><?php print "<input name=".$area."_visualizza " " type=checkbox checked=checked id=".$area."_visualizza " "value=ok>"?></td>
                    </tr>
    Ti ringrazio per l'aiuto.

  9. #9
    Capirei se non fosse per quel isset() che di fatto converte la variabile a booleana.

    anyway...

    basta sostituire ogni $$xxx a destra dell'uguale in $_POST[$$xx], es:

    Codice PHP:
    $$ck_ins = isset($_POST[$$ck_ins]);    
    //... 
    Poi leverei quell'isset... o meglio farei così:

    Codice PHP:
    $$ck_ins =array_key_exists($$ck_ins,$_POST)? $_POST[$$ck_ins] : false

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 © 2024 vBulletin Solutions, Inc. All rights reserved.