• Super User

    Domande da neofita

    Ok mi rendo conto che le domande potranno essere troppe quindi creo questo post e lo utilizzo come solo e unico in modo da nn doverne creare a decine per ogni singola domanda che mi viene in mente :():

    Innanzitutto mi sono munito di libri in php5 , di un compilatore diverso da Dreamweaver (Zend).
    Ora però ho ancora dei dubbi.
    Sono un maniaco dell'accessibilità ma usando php mi è sorto un grosso dubbio.
    Le pagine in php sono compatibili con l'accessibilità imposta dal w3c?
    Se si come faccio a leggerle dal validator e quali sono i tag necessari alla sua codifica?
    Se non lo sono vabè , ci metterò una pietra sopra =(


  • Super User

    Ok non mi avete risposto alle domande precedenti :nonono:
    In ogni caso ve ne propongo un'altra (intanto uppo questo post :yuppi:)

    In riferimento a vecchi post sono alle prese nel creare un pannello di controllo per amministrare il sito web direttamente da li. Non voglio usare prodotti di terze parti quindi sorgono parecchi problemi anche se tutto questo mi sta lentamente aiutando a comprendere e sfruttare il php.

    Allora:

    • Ho creato gia l'home page.
    • Ho creato il file .php che attraverso le sessioni gestisce il login degli utenti dividendo l'indirizzamento per "gruppo" (amministratori, user semplici o non-registrati).

    Sto creando adesso la pagina per l'amministratore o meglio il pannello di controllo dove possa vedere e modificare news, il catalogo dei prodotti, l'accesso degli utenti registrati , l'accesso al database ecc.

    Per ora senza nessuna base grafica ne troppe complicazioni sto cercando di "gettare" i dati dal database in modo da creare delle tabelle visive per ognuna di queste cose:
    Ho questo codice:

    [php]<?php
    session_start();
    require('connection.php');
    $host="192.168.1.199";$user="root";$pwd="fabio";$dataB="easysystem";
    $conn=new connection($host,$user,$pwd,$dataB);
    $conn->db_connect();

    //parametro generale che controlla la sessione per ogni utente
    if(!isset($_SESSION['session']) && $_SESSION['session']!=1){
    echo "Attenzione sessione scaduta";
    echo "<br />Se il browser persistesse controllare l'abilitazione dei cookie e delle sessioni";
    exit();
    }
    function htmlHead(){
    ?><html>
    <head>
    </head>
    <body>
    <?}

    function htmlfeet(){
    ?> </body>
    </html><?
    }

    //switch che legge il tipo di user loggato e gestisce l'interfaccia da visualizzare
    switch($_GET['gruppo']){
    case 'web-master';
    htmlHead();
    masterInterface();
    htmlfeet();
    break;
    case 'user';
    userInterface();
    break;
    }
    //funzione per la creazione d'interfaccia per l'amministratore/web-master
    function masterInterface(){
    ?><h1>EASYSYSTEM: pannello di controllo</h1>
    <h2>Parametri di connessione::</h2>
    <h3>Gestione catalogo</h3>
    <? listcatalogo(); ?>
    <h3>Gestione news</h3>
    <h3>Gestione utenti</h3>
    <?
    }
    //mostra il catalogo (only web-master)
    function listcatalogo(){
    $query="SELECT * FROM catalogo";

    $c=count($oggetti);
    for($i=0; $i<$c; $i++){
        echo $oggetti*['nome'];
    }
    

    }
    //mostra le news (only web-master)
    function listnews(){}
    //mostra gli utenti registrati (only web-master)
    function listUtenti(){}

    //funzione per la creazione d'interfaccia per l'user semplice
    function userInterface(){
    echo "<br />prova user";
    }

    ?>[/php](è in locale quindi non sto nemmeno ad oscurarvi i parametri di connessione :vaiii: )

    Ora da neofita ho ancora un dubbio:

    • In alto faccio un require richiamando la classe esterna per le connessioni al database
    • tutto il resto è codice che controlla la sessione e reindirizza l'utente a seconda del suo gruppo (ancora prima c'è un file session.php che controlla user e password applicando alcuni parametri interni di sicurezza del sito e invia a questa pagina)

    La mia domanda è questa (ho fatto una descrizione lunga ed eccessiva? :sbonk:)

    All'interno del codice, per la precisione:

    [php]function listcatalogo(){
    $query="SELECT * FROM catalogo";
    //qui manca ciò che mi serve
    $c=count($oggetti);
    for($i=0; $i<$c; $i++){
    echo $oggetti*['nome'];
    }
    }[/php]Devo inviare la query alla funzione $db_array($query) che si trova in una classe esterna. (questa mi rimanda indietro il result).
    Quello che ancora non so fare è appunto come poter dire all'interno di quella funzione che voglio richiamare "db_array($query)" nonostante si trovi in una classe esterna.

    Al top del codice lo so fare
    $conn=new $connection(....);
    $conn->db_array($query);

    Ma non so come fare a richiamarla solo all'interno della funzione.
    Non ho capito se devo ricreare $conn=new $connection(...); ogn volta che voglio interrogare il database.
    C'è un modo dover chiamare la connessione al database un'unica volta per tutti e usare unicamente la funzione di invio query in ogni funzione?
    Xkè mi sa di macchinoso e lento dover fare (es.) 3 connessioni al database nella solita pagina x creare tre tabelle.

    GRAAAZZIE :a084:


  • Super User

    Ciao karedas,per la tua terza domanda,prova così:

    [php]
    function listcatalogo(){
    classe::db_array($query); // classe = nome della classe con il metodo db_array();
    } [/php]Fammi sapere se funziona...

    Domanda 2:
    sposto in Firefox 😉

    domanda 1:
    Il codice php non essendo "outputtato" 😄 non viene considerato nella validazione.
    Quello che è invece preso in considerazione è l'output html,cioè il sorgente della pagina finale.
    Ciao!


  • Super User

    Grazie provo!

    Per la risposta mmhh.. :mmm:
    Si ma se io scrivo in php
    [php]
    <?php
    echo "<span> prova </span";
    ?>[/php]
    Questo viene rilevato dall'output nel validator?
    Oppure solo e unicamente ciò che viene generato dall'html fuori il php?


  • Super User

    ok funziona!


  • Super User

    Il codice che hai scritto tu viene validato in quanto rappresenta un output e alla visualizzazione del sorgente della pagina o della pagina stessa viene mostrato.
    Ma il codice php non viene validato perchè illeggibile 🙂
    Esempio se tu scrivi:

    Mysql_queryyy();

    la sintassi errata non verrà evidenziata in quanto il w3c non è in grado di vedere quella frazione di codice in php.
    Per gli errori php infatti esistono strumenti di debug appositi.

    Ciao!


  • Super User

    @karedas said:

    ok funziona!
    Bene 😉


  • Super User

    Salve,
    Siccome sto creando un pannello di controllo "standard" da poter riutilizzare in più pagine internet , volevo renderlo "autonomo" in modo che , senza dover rimettere mani sul codice, questo possa "adeguarsi" al sito automaticamente.
    Per spiegarvi avevo in mente di creare un file.txt dove posare i dati di base (host, username, password, nome sito ecc) e far si che il codice php primario si riferisca a questo per settare automaticamente il proprio pannello di controllo.
    Ora. Quanto è sicuro tutto ciò? Leggere da file.txt queste informazioni è un rischio?
    Grazie!


  • Super User

    Ciao karedas,rispondo subito alla tua terza domanda:
    se utente aprisse da browser la pagina file.txt con i parametri di configurazione anche tra i tags php avrebbe già il db in mano.
    Quindi questa procedura è **rischiosissima!
    **Per ovviare avresti bisogno di settare il chmod (permessi) al file in modo da impedire l'accesso a determinate categorie.
    Ovviamente però che un utente inesperto avrebbe alte probabilità di vedersi rubato l'account se non svolge l'operazione suddetta.
    Quindi a mio dire puoi benissimo far inserire i dati in un file da richiamare tramite inclusione ma questo deve avere estensione .php e le variabili d'accesso al db devono essere contenute tra i tags php in modo che il browser non li restituisca alla visualizzazione.
    Magari se puoi (e se sai farlo) fai creare a php un file .php con le caratteristiche sopra,ma dal nome composto da caratteri alfanumerici casuali.
    In questo modo il tuo script sarebbe molto sicuro 😉
    Ciao!

    P.S: Le altre domande le sposto nell'area relativa ai software per la scrittura di codice,poi ti do il link e se sono in grado di farlo rispondo nelle nuove discussioni 😉
    Ciao!


  • Super User

  • Super User

    Grazie per le risposte e per la disponibilità!
    Nel giro di due settimane mi sto rendendo conto di aver imparato ad usare una quantità esorbitante di cose con il php forse aiutato dalla conoscenza del java.
    Però ho ancora alcuni dubbi nell'agire su alcuni parametri web!

    Passo alla domanda del giorno :vai:

    [LEFT]- Come faccio a criptare un dato presente su di un database?
    Vorrei semplicemente che richiamando un dato, questo non mi arrivi in forma originale ma magari codificato sotto una serie di numeri e lettere casuali.
    A sua volta voglio però che se putacaso richiamassi quel dato , la funzione de-codifichi e riutilizzi in forma originale quest'ultimo 😄

    • Per le registrazioni ai siti e ai forum esiste a fine registrazione quella famosa e utilizzatissima utilità per rallentare lo spamming dei mod automatici e cioè l'immaginetta cn una serie di numeri e lettere "disegnate" il quale utente deve riscrivere nella textarea per terminare e convalidare la registrazione.

    Sapete dirmi se e come è possibile farlo? Se esiste un mod o simili?

    • Con il metodo $_SERVER['REQUEST_URI'] posso gettare l'url PRIVO di parametri in get. C'è un modo per gettare l'intera stringa dell'url?
      Volevo salvare in una variabile l'url + ciò che viene dopo il ? in modo da non dover ogni volta riscrivere $SERVER['REQUEST ecc ecc... così smaltisco un pò il codice.
      Si può? :mmm:

    Grazie in anticipo! :vaiii:
    [/LEFT]


  • Super User
    1. Ci sono le funzioni crypt,sha1 e md5 ma non è possibile una successiva decryptazione.
      Qui potresti crearti uno script di codifica.

    2. Avevo postato tempo fa uno script in merito,lo cerco e ti passo il link 🙂
      ah,le immagini con le serie di lettere e numeri si dicono Captcha.

    3. $_SERVER['REQUEST_URI']."?".$_SERVER['QUERY_STRING'];

    Ciao!


  • Super User

    Mhh no forse ho sbagliato io ma con $_SERVER['REQUEST_URI'] il php mi getta l'intera stringa comprensiva di parametri °_°

    La nuova domanda del giorno è questa :vaiii: :

    • Ho questo codice php. Questa è una funzione che viene attivata dopo il click su di un tasto posto al fianco di un record (di una tabella). Essa mostra una finestra dentro un div la quale chiede una conferma dell'operazione di DELETE del record.
      Ora:
      Cancellare il record dopo il SI lo so fare ma non capisco come tornare alla pagina precedente se premo no.

    Per intenderci:
    La posizione della tabella con i record e i tasti DELETE è questa:

    http://localhost/easysystem/login.php?gruppo=web-master&show=6
    

    Per far comparire sotto la tabella il riquadro di conferma ho aggiunto un parametro "risp" arrivando (nel momento del click sul DELETE) a questo percorso:

    http://localhost/easysystem/login.php?gruppo=web-master&show=6&action=delete&id=1&type=news
    

    Ora: questo url passa:

    • l'action: delete
    • l'id: l'id del record in modo da richiamarlo con la funzione e imploderlo :yuppi:
    • type: il tipo di record in questo caso una news.Quello che non capisco è quindi come tornare all'url precedente senza dover fare troppi request o mazzi vari.
      Il codice php è questo:
      [php]
      function deleteItem(){
      $gruppo=$_GET['gruppo'];
      $show=$_GET['show'];
      if(!isset($_GET['risp']) || $_GET['risp'] !=1){
      echo "
      <div id='warning'>
      <span><strong>ATTENZIONE:</strong></span>
      <p>Sei sicuro di voler cancellare questo oggetto?</p> <p>Il dato non potrà essere recuperato<span></p>
      <a href='<?echo $show?>&risp=1'><input type='button' value='SI' /></a>
      <a href='".$_SERVER['REQUEST_URI']."'><input type='button' value='NO' /></a>
      </div>";
      }
      //risposta vuota
      else if(($_GET['risp']==0) || !isset($_GET['risp'])){
      //non fa niente
      }
      //risposta si
      else if($_GET['risp']==1){
      $deleteQuery="DELETE FROM ".$GET['type']."
      WHERE id
      ".$_GET['type']." = ".$_GET['id']."
      LIMIT 1";
      connection::delete_array($deleteQuery)
      or die("Errore nella query: ".mysql_error());
      echo "<div id='warning'><p>Item rimosso con successo</p>
      <a href='http://localhost/easysystem/login.php?gruppo=web-master'>Torna al Pannello di controllo</a>
      </div>";
      }
      ?>
      </div>
      <?
      }
      [/php]

    eeee....ciao e grazie!:ciapet: