Visualizzazione risultati 1 fino 5 di 5

Discussione: mysql_query($query, $connessione)non funziona

  1. #1
    staffo non è connesso Neofita
    Data registrazione
    17-01-2016
    Messaggi
    4

    Predefinito mysql_query($query, $connessione)non funziona

    Buona sera a tutti,
    non so se ho scritto nella sezione giusta ma mi pareva la più appropriata
    il problema che mi è sorto è il seguente: ho realizzato una pagina di accesso al mio sito gesita con un database,
    riesco ad accedere e vengo reindirizzato ad un altra pagina, poi se voglio leggere un altro dato dal database richiamando mysql_query($query, $connessione) mi si ferma all' "or die (mysql_error())" anche se la sintassi della $query è corretta.
    Grazie in anticipo a chi mi vuole rispondere

  2. #2
    Guest

    Predefinito

    Scusa ma la sfera di cristallo è rimasta in officina per il tagliando per cui magari se riporti un po' di codice forse qualcuno potrebbe aiutarti

  3. #3
    staffo non è connesso Neofita
    Data registrazione
    17-01-2016
    Messaggi
    4

    Predefinito

    Hai ragione scusa.
    il mio sito è stutturato con una schermata di login che invia i dati a questa pagina PHP:
    Codice PHP:
    <?php
    session_start
    (); //inizio la sessione
    //includo i file necessari a collegarmi al db con relativo script di accesso
    include("connessione_db.php");
    include(
    "config.php");

    //seleziono il db
    mysql_select_db($db_name,$connessione);

    //variabili POST con anti sql Injection
    $username=mysql_real_escape_string(sha1($_POST['username'])); //faccio l'escape dei caratteri dannosi
    $password=mysql_real_escape_string(sha1($_POST['password'])); //sha1 cifra la password anche qui in questo modo corrisponde con quella del db


    $query = "SELECT * FROM utenti WHERE users_c = '$username' AND password_c = '$password'";
    $ris = mysql_query($query, $connessione) or die (mysql_error());
    $riga=mysql_fetch_array($ris);

    /*Prelevo i dati */
    $id=$riga['id'];
    $cod=$riga['users_c'];
    $utente=$riga['users'];
    $autorizzazione=$riga['autorizzazione'];
    /* Effettuo il controllo */
    if ($cod == NULL)
    $trovato = 0 ;
    else
    $trovato = 1;

    /* Username e password corrette */
    if($trovato == 1) {

    /*Registro la sessione*/
    session_register('autorizzato');

    $_SESSION["autorizzato"] = 1;

    /*Registro il codice dell'utente*/
    $_SESSION['id'] = $id;
    $_SESSION['cod'] = $cod;
    $_SESSION['autorizzazione'] = $autorizzazione;
    $_SESSION['utente'] = $utente;
    /*Redirect alla pagina riservata*/
    echo '<script language=javascript>document.location.href="/FilePubblici/privato.php"</script>';


    } else {

    /*Username e password errati, redirect alla pagina di login*/
    echo '<script language=javascript>document.location.href="index.php"</script>';

    }
    ?>
    e questa pagina funziona alla perfezione e rimanda ad una pagina pubblica che qualunzue utente loggato correttamente può vedere e li c'è un link che manda alla propria pagina privata strutturata così:
    Codice PHP:
    <?php
    session_start
    ();
    $autorizzazione = $_SESSION['autorizzazione'];
    $utente = $_SESSION['utente'];
    $id = $_SESSION['id'];
    //se non c'è la sessione registrata
    if (!session_is_registered('autorizzato')) {
    echo
    "<h1>Area riservata, accesso negato.</h1>";
    echo
    "Per effettuare il login clicca <a href='/index.php'><font color='blue'>qui</font></a>";
    die;
    }
    $dir = explode("/", __DIR__);
    $_path=$dir[4];
    if(
    $_path!=$id AND $autorizzazione!='Amministratore'){
    echo
    "<h1>Area riservata ad un altro utente.</h1>";
    echo
    "Per effettuare il login clicca <a href='/index.php'><font color='blue'>qui</font></a>";
    die;
    }
    session_start();
    $query = "SELECT users FROM utenti WHERE id = 2";
    $_aUtente = mysql_query($query, $connsessione)or die("Errore nella query: " . mysql_error());
    //Altrimenti Prelevo il codice identificatico dell'utente loggato
    session_start();

    echo
    "<a href='/FilePubblici/privato.php'>Sezione Pubblica</a>";

    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Staffo</title>
    <link href="privato.css" rel="stylesheet" type="text/css" />
    </head>
    <body>

    <?php
    echo "<h1>Benvenuto $_aUtente</h1>";
    ?>

    </body>
    </html>
    e questo mi si blocca su
    Codice PHP:
    $_aUtente = mysql_query($query, $connsessione)or die("Errore nella query: " . mysql_error());
    facendomi visualizzare solo "Errore nella querry" e senza aggiungere un "mysql_errore()"
    Grazie e scusate per prima, se i file ancora non dovrebbere bsatare chiedetemi pure cos'altro vi necessita

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Di imprecisioni ce ne sono diverse, ma ad occhio credo che il problema sia causato dalla mancanza di connessione nelal seconda pagina:
    Codice PHP:
    $_aUtente = mysql_query($query, $connsessione)or die("Errore nella query: " . mysql_error());
    in cui utilizzi una variabile $connessione che non è inizializzata. Probabilmente hai dimenticato di includere il file connessione_db.php come invece hai fatto nella prima pagina.
    Questo è coerente con il comportamento di mysql_error che, in mancanza di una connessione, solleva un E_WARNING e restituisce una stringa vuota. Usando error_reporting con E_ALL puoi chiedere a PHP di visualizzare tutti gli errori ed i warning, per aiutarti ad individuare i problemi.

    Altre osservazioni:
    • le funzioni mysql_* sono deprecate, dovresti utilizzare mysqli o PDO
    • nella seconda pagina chiami session_start tre volte: ne basta una sola, all'inizio, magari controllando che una sessione non sia già stata avviata
    • la funzione session_register è deprecata, usa il vettore $_SESSION (lo stesso vale per session_is_registered e affini), vedi session_start per degli esempi
    • anziché produrre un codice JavaScript per il reindirizzamento, puoi inviare uno header tramite PHP:
      Codice PHP:
      header('Location: percorso/../privato.php');
      exit;
    • accorgimenti vari per migliorare il codice, ad esempio:
      Codice PHP:
      if ($cod == NULL)
      $trovato = 0 ;
      else
      $trovato = 1;

      if(
      $trovato == 1) {
      può essere reso più semplicemente come:
      Codice PHP:
      $trovato = !empty($cod);
      if (
      $trovato) {
      molto più compatto e coerente (se $trovato deve rappresentare qualcosa che può essere solo vero o falso, perché usare dei numeri?)
    • perché lo hash sul nome utente?
    • sha1 non è adatta per le password (vedi PHP - Password Hash, dovresti usare le funzioni native come password_hash e password_verify

  5. #5
    staffo non è connesso Neofita
    Data registrazione
    17-01-2016
    Messaggi
    4

    Predefinito

    Grazie mille adesso provo poi vi faccio sapere

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •