• User

    Mi puoi spiegare cosa significa?


  • ModSenior

    Dovresti leggere la guida per capire, li è tutto spiegato sui problemi che derivano dagli apici e determinate configurazioni di php.


  • User

    Adesso funziona tutto!!!mi è bastato cambiare questo della pag contenente i dati inviati dal form
    $id_ann=$_POST['id'];
    al postodi $id_ann=$_GET['id'];

    graazie dell'aiuto!!!


  • User

    volevo chiedere ancora una volta..vorrei verificare prima di una modifica e di una cancellazione l'esistenza del messaggio..come posso fare?


  • ModSenior

    Fai una query select e controlli con mysql_num_rows se c'è il record.


  • User

    Tipo una cosa del genere?

    [PHP]if($title!="" && $body !=""){
    $risultato = mysql_query("SELECT * FROM annunci_offro WHERE autore='".$_SESSION['utente']."'")or die(mysql_error("query annunci fallita"));
    mysql_num_rows($risultato);

    $modifica=mysql_query("UPDATE annunci_offro SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error("query modifica fallita"));

    echo"modifica ok";
    header("refresh:2;URL=annunci_offro.php");
    }else{

        echo"impossibile modificare";
        header("refresh:2;URL=annunci_offro.php");
        } 
    

    }
    mysql_close();

    ?>
    [/PHP]

    dove prima della query update ho messo select con il num_rows


  • ModSenior

    [php]
    mysql_num_rows($risultato);
    [/php]
    Restituisce il numero di record quindi tu dovresti fare una cosa del tipo:
    [php]
    if(mysql_num_rows($risultato) == 0)
    die('ID non presente');
    [/php]


  • User

    [PHP]
    if($title!="" && $body !=""){
    $risultato = mysql_query("SELECT * FROM annunci_offro WHERE autore='".$_SESSION['utente']."'")or die(mysql_error("query annunci fallita"));
    if(mysql_num_rows($risultato) == 0)
    die('ID non presente');

    $modifica=mysql_query("UPDATE annunci_offro SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error("query modifica fallita"));

    echo"modifica ok";
    header("refresh:2;URL=annunci_offro.php");
    }else{

        echo"impossibile modificare";
        header("refresh:2;URL=annunci_offro.php");
        } 
    

    }
    mysql_close();

    ?>

    [/PHP]

    Mi diresti se va bene così?


  • ModSenior

    Si va bene cosi, ma la funzione mysql_error non ha come primo parametro una stringa.


  • User

    @Thedarkita said:

    Si va bene cosi, ma la funzione mysql_error non ha come primo parametro una stringa.

    Quindi dovrei togliere il mysql_error?


  • ModSenior

    Dovrebbe diventare una cosa di questo tipo:
    [php]
    or die("query annunci fallita: ".mysql_error())
    [/php]


  • User

    @Thedarkita said:

    Dovrebbe diventare una cosa di questo tipo:
    [php]
    or die("query annunci fallita: ".mysql_error())
    [/php]

    [PHP]$q="SELECT * FROM utenti WHERE username='$username'";
    $ris=mysql_query($q) or die("fallita");
    if(mysql_affected_rows()== 0){
    echo"non presente";

    }else{
    $c = isset($_GET['cancella']) ? $_GET['cancella'] : "";
    if ($_POST["canc"]=="si") { // se sceglie si

    //eseguo la query per la cancellazione dell'account
        $query="DELETE FROM utenti WHERE username='$username'";
        $res=mysql_query($query) or die(" query cancellazione account fallita"); // in caso di problemi con la query
        
        
        $messaggio="dati cancellati";
        header("refresh:; URL=home.php");
    

    }else{ //altrimenti se sceglgo no i dati non vengono cancellati
    if($_POST["canc"]=="no")

    $messaggio="i dati non sono stati cancellati";
    $username=$_SESSION['utente'];

    }

    echo $messaggio;
    }
    }[/PHP]

    Mi dici se può andare il controllo per verificare prima della cancellazione se l'utente è presente?


  • ModSenior

    No, mysql_affected_rows serve per query di update/delete/insert.


  • User

    Quindi per cancellare un utente, verifico la sua esistenza se c'è lo cancello...correggo così?
    [php]
    $q="SELECT * FROM utenti WHERE username='$username'";
    $ris=mysql_query($q) or die("fallita");
    if(mysql_num_rows()== 0){
    echo"user non presente";

    }else{
    $c = isset($_GET['cancella']) ? $_GET['cancella'] : "";
    if ($_POST["canc"]=="si") { // se sceglie si

    //eseguo la query per la cancellazione dell'account
        $query="DELETE FROM utenti WHERE username='$username'";
        $res=mysql_query($query) or die(" query cancellazione account fallita"); // in caso di problemi con la query
        
        
        $messaggio="dati cancellati";
        header("refresh:; URL=home.php");
    

    }else{ //altrimenti se sceglgo no i dati non vengono cancellati
    if($_POST["canc"]=="no")

    $messaggio="i dati non sono stati cancellati";
    $username=$_SESSION['utente'];

    }

    echo $messaggio;
    }
    }
    [/php]


  • User

    Adesso mi sono occorta di avere un altro problema..Nella pag di login, succede questo. Quando digito username o pwd non corrette, oppure non riempio tutti i campi, invece di vedere i messaggi di errore, mi rimanda alla pagina degli annunci, ma non vedo gli annunci e vedo sessione scaduta..come posso risolverlo???⭕o:o [PHP]<?php
    //inizia la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro una connessione con il db e lo seleziono
    $conn = mysql_connect($host,$user,$password) or die;
    mysql_select_db($db) or die;
    // inizializzo la variabile
    $messaggio = "";
    // se è stato premuto il pulsante invia
    if (isset($_POST['invia'])) {
    // controllo sulle stringhe
    $username = ($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);
    // se i campi non sono vuoti
    if (!empty($username) && !empty($password)) {
    //preparo la query
    $query = "SELECT * FROM utenti WHERE username='$username' AND password='$password' ";
    // la eseguo
    $controllodati = mysql_query($query);
    // se trovo un risultato
    if (mysql_num_rows($controllodati) == 1) {
    // recupero i dati del record
    $sessione = mysql_fetch_array($controllodati);
    // metto in sessione la username
    $_SESSION['utente'] = $sessione['username'];
    } else {
    // utente non trovato

                  $messaggio="<font color='black' face='times new roman' size='4px'>User o password non validi";
                     header("refresh: 2; URL=home.php");
                   
                }
            } else {
            
                // campi vuoti
                $messaggio = "<font color='black' face='Times new roman' size='4px'>devi riempire tutti i campi";"Non hai inserito le credenziali";
                   header("refresh: 2; URL=login.php?azione=login");
            }
        }
        ?> 
        <html>
            <head> 
                    <!-- striscia in alto -->
                <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script>
    

    <title>Login</title>
    <!-- css esterno -->
    <link rel="stylesheet" type="text/css" href="stile.css">
    </head>
    <body>
    <table>
    <tr>
    <td>
    <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>

                        </td>         
                    </tr>
                </table>
                            <div id="menu">
                                <ul>
                                    <?php
                                    // se non c'è una sessione utente mostro il link per il login o per la registrazione
                                    if (!isset($_SESSION['utente'])) {
                                        echo"<li><p><font color='red' Face='georgia' size='4px'>Ciao visitatore!</p></li>";
                                        echo"<li><p><a href='login.php?azione=login'><p><font color='blue' Face='sans-serif' size='4px'>login</a></p></li>";
                                        echo"<li><p><a href='registrati.php'>registrati</a></p></li>";
                                        echo"<br>";
                                        echo"<br>";
                                        echo"<br>";
                                        
                                    } else { // altrimenti il logout e il cancella dati, solo se c'è la sessione utente
                                        echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] ."!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella account</a></li>";
                                   
                                    }
                                    
                                    ?>   
                                </ul>
                            </div>
                <?php
                echo "<p>" . $messaggio . "</p>";
                //azione determina il login o il logout
                $p = isset($_GET['azione']) ? $_GET['azione'] : "";
                if ($p == "login") {
                
                
                   // se è già in corso la sessione utente l'utente non potrà loggarsi di nuovo
                    if(isset($_SESSION['utente'])){
                    
                                                    
                                    
                                    echo"<font color='black' face='times new roman' size='4px'>Verrai indirizzato alla pagina degli annunci";
                                    header("refresh:2; URL=entra1.php");
                                    
                                    
                                 
                
                }else{ ?>
                
                    <form method="POST" action="login.php">
                        <label for="username">Username</label>
                        <input type="text"name="username" id="username"/><br>
                        <label for="password"> Password</label>
                        <input type="password" name="password" id="password"/><br>
                        <input type="submit" name="invia" value="entra"/><br>
    

    <?PHP
    }
    ?>
    </form>
    <?php
    // con il logout
    } else if ($p == "logout") {
    //distruggo la sessione
    session_destroy();

                    echo"<br>";
                    echo"<br>";
                    echo"<br>";
                    
                    echo"<font color='black' face='times new roman' size='4px'>Logout effettuato";
                    echo"<br>";
                    Echo"<font color='black' face='times new roman' size='4px'>Arrivederci,<b> " . $_SESSION['utente'] . "</b>";
                    // reindirizzo l'utente alla pag della home
                    header("refresh: 2; URL=home.php");
                    
                    
                }else{
                echo"<br>";
                echo"<br>";
                echo"<font color='black' face='times new roman' size='4px'>Verrai reindirizzato alla pagina degli Annunci";
                header("refresh:2, URL=entra1.php");    
                    
                }
                // chiudo la connessione al db
                mysql_close();
                ?>    
            <script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.src=(("http:"===document.location.protocol)?"http:":"https:")+"//"+"d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrfj","beacon-1.newrelic.com","1b473294f5","550561","M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,64,new Date().getTime(),"","","","",""]);</script>
    

    </body>
    </html>

    [/php]


  • User

    Mi sapete aiutare?


  • User Attivo

    Presumo che stai lavorando in un server virtuale installato in ambiente Windows.
    Se così è la password è obbligatoriamente "root" e devi scriverla normalmente e dopo "root" nel punto dove adesso appaiono "".
    Puoi impostare solo la password "root" ed è obbligatoria anche se ti colleghi direttamente al database MySQL.
    MySQL devi eseguirlo come servizio.