Script php per link 'Aggiungi agli amici'?

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
Salve a tutti,
ho sviluppato un codice che mi serve per fare aggiungere a un utente una persona come amico, ma il problema è che ogni volta che ricarico la pagina dove si trova lo script, pur non spuntando il link, mi aggiunge il dato alla tabella del database senza toccare alcuna parte della pagina, ma solo aggiornando. Potreste aiutarmi a capire e risolvere l'errore?
Ecco il codice:
Io devo sviluppare il codice in modo che si apra una finestra per aggiungere un dato in una tabella di mysql, quindi creo un link ad una pagina che ha come variabile settata quella che viene verificata e che serve per chiedere la conferma dell'azione, in modo che venga aggiunto il dato. Ho quindi modificato il codice in questo modo, ma mi aggiunge comunque il dato in tabella anche se viene aggiornata la pagina in cui si trova, perché?

Ecco il codice:
PHP:
<?php   
session_start();   
$user = (!empty($_GET['id'])) ? $_GET['id'] : 'Niente';
include('connessione.php');   
if($_SESSION['utente'] == ""){   
echo("Non sei autorizzato ad entrare!");   
exit();   
}   
?>   
<html xmlns="http://www.w3.org/1999/xhtml">   
<head>   
</head>   
<body>
<?php 
require_once "connessione.php";
if(isset($_GET['user'])){
    $query3=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."')");
var_dump($query3);
$query2 = "SELECT * FROM amici, amici_temp WHERE username_proprietario='".$_SESSION['utente']."'";
$result2 = mysql_query($query2) or die(mysql_error()); 
if(mysql_num_rows($result2)==0){ 
echo "<a href=\"?user=".$_GET['id']."\" onclick=\"return(confirm('Sei sicuro di voler inoltrare la richiesta? Clicca su Ok se s&igrave, mentre su Annulla se no!'))\">Aggiungi agli amici!</a>"; 
} 
}else{
    echo '';
}
$ora_attuale = time();   
$query = "SELECT * FROM bacheca WHERE Nome='$user'";   
var_dump($query);
$result = mysql_query($query) or die(mysql_error());   
while($riga = mysql_fetch_array($result)){   
$mss = stripslashes($riga['Messaggio']);   
$ora = date("d/n/Y g:i:s A", $riga['Data']);
print "<div class='postbacheca'><p class='bacheca'>$ora <label class='barradistanziatrice'> |</label> <label class='messaggio'> $mss </label></p></div>";       
}   
mysql_close($db);   
?>
</body>
</html>

Grazie a tutti in anticipo per il vostro aiuto,
hackersatifal.
 

minatore

Utente Attivo
25 Set 2007
410
0
0

Ciao, come dato cosa salvi un id.
Poi volevo chiederti di farmi capire meglio cosa vuoi fare, nel senso quando aggiorni la pagina cosa succede.
Ciao
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0

Ciao, come dato cosa salvi un id.
Poi volevo chiederti di farmi capire meglio cosa vuoi fare, nel senso quando aggiorni la pagina cosa succede.
Ciao

Questo script si trova in una pagina che ha l'URL strutturato in questo modo: pagina.php?id=Nome utente della sessione.
Quindi estraggo questo e lo inserisco nell'url della pagina che si viene a creare cliccando sul link: pagina2.php?user=nome utente estratto tramite l'array.
Quello che dovrebbe succedere è che, cliccando sul link 'Aggiungi agli amici' si dovrebbe inserire dei dati
PHP:
$query3=mysql_query("INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('".$_SESSION['utente']."', '".$_GET['id']."')");
all'interno di una tabella mysql, è solo che, pur non spuntando il link perché il dato è già presente nella tabella,
aggiornando la pagina, si reinserisce il dato nella tabella del database (non dovrebbe succedere). Mi aiuteresti a capire come mai?
Grazie in anticipo per il tuo aiuto,
hackersatifal :D
 

minatore

Utente Attivo
25 Set 2007
410
0
0

Ciao, l'unica cosa che mi viene sibito da consigliarti e quella di fare un controllo sulla tabella,
se quel dato già è iinserito non fare niente.

 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Il controllo di cui parla minatore è d'obbligo. Se gli utenti sono già amici non Devi eseguire l'insert.
Ma ci sono anche altri controlli da fare, te ne suggerisco due:

pagina.php?id=Ciaociao
1. Se tu lanciassi questa pagina con quell'id, si va a creare una tuo la nella tabella con 'Username_amico'=Ciaociao.
Quindi dovresti mettere un controllo, se l'utente con l'id passato con GET esiste nella tabella utenti allora puoi eseguire la insert, altrimenti no!

2. (derivante dalla 1) Un utente se inserisce il suo id non deve comunque eseguire la insert in quanto non può essere amico di se stesso. Quindi basta vedere che non sia il suo stesso id.

Se me ne vengono altri attinenti al caso ti dirò.

Edit: attenzione a quando fai il controllo suggerito da minatore. Se un utente è amico di un altro il suo id si può trovare sia in username_proprietario sia in username_amico.
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ho sistemato il tuo script in questo modo:
PHP:
<?php
session_start();

require_once 'connessione.php';

if (!isset($_SESSION['utente'])) {
    header('HTTP/1.0 403 Forbidden');
    die('Non sei autorizzato a entrare.');
}

$user = !empty($_GET['id']) ? (int)$_GET['id'] : 0;
?>
<!DOCTYPE html>
<html lang="it">
    <head>
        <title>Aggiungi amico</title>
        <meta charset="utf-8" />
    </head>

    <body>
        <?php
        if ($user !== 0) {
            $username = addslashes($_SESSION['username']);
            $sql = "INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('%s', %d)";
            $sql = sprintf($sql, $username, $user);
            $query = mysql_query($sql) or die(mysql_error());

            $sql2 = "SELECT * FROM amici, amici_temp WHERE username_proprietario = '%s'";
            $sql2 = sprintf($sql, $username);
            $query2 = mysql_query($sql2) or die(mysql_error());

            if (mysql_num_rows($query2) == 0) {
                echo <<<EOF
        <a href="?user={$user}" onclick="retun confirm('Sei sicuro di voler inoltrare la richiesta?')">Aggiungi agli amici!</a>
EOF;
            }
        }

        $sql3 = 'SELECT * FROM bacheca WHERE nome = %d';
        $sql3 = sprintf($sql3, $user);
        $query3 = mysql_query($sql3) or die(mysql_error());

        while ($riga = mysql_fetch_assoc($query3)) {
            $msg = stripslashes($riga['Messaggio']);
            $ora = date('d/n/Y g:i:s A', $riga['Data']);

            echo <<<EOF
        <div class="postbacheca">
            <p class="bacheca">
                {$ora}
                <label class="barradistanziatrice"> |</label>
                <label class="messaggio"> {$msg} </label>
            </p>
        </div>
EOF;
        }
        ?>
    </body>
</html>
Ma perché hai inserito la logica per l'aggiunta di un utente agli amici nella pagina della bacheca? Operazioni differenti, pagine differenti.

P.S. Quello script era tremendo, e continua a esserlo anche dopo le mie correzioni, perché ci sono molti errori sia logici che tecnici, e il database è strutturato male. Leggi qua e cerca di applicare TUTTI i punti.
 
Ultima modifica:

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
Ho sistemato il tuo script in questo modo:
PHP:
<?php
session_start();

require_once 'connessione.php';

if (!isset($_SESSION['utente'])) {
    header('HTTP/1.0 403 Forbidden');
    die('Non sei autorizzato a entrare.');
}

$user = !empty($_GET['id']) ? (int)$_GET['id'] : 0;
?>
<!DOCTYPE html>
<html lang="it">
    <head>
        <title>Aggiungi amico</title>
        <meta charset="utf-8" />
    </head>

    <body>
        <?php
        if ($user !== 0) {
            $username = addslashes($_SESSION['username']);
            $sql = "INSERT INTO amici_temp (username_proprietario, username_amico) VALUES ('%s', %d)";
            $sql = sprintf($sql, $username, $user);
            $query = mysql_query($sql) or die(mysql_error());

            $sql2 = "SELECT * FROM amici, amici_temp WHERE username_proprietario = '%s'";
            $sql2 = sprintf($sql, $username);
            $query2 = mysql_query($sql2) or die(mysql_error());

            if (mysql_num_rows($query2) == 0) {
                echo <<<EOF
        <a href="?user={$user}" onclick="retun confirm('Sei sicuro di voler inoltrare la richiesta?')">Aggiungi agli amici!</a>
EOF;
            }
        }

        $sql3 = 'SELECT * FROM bacheca WHERE nome = %d';
        $sql3 = sprintf($sql3, $user);
        $query3 = mysql_query($sql3) or die(mysql_error());

        while ($riga = mysql_fetch_assoc($query3)) {
            $msg = stripslashes($riga['Messaggio']);
            $ora = date('d/n/Y g:i:s A', $riga['Data']);

            echo <<<EOF
        <div class="postbacheca">
            <p class="bacheca">
                {$ora}
                <label class="barradistanziatrice"> |</label>
                <label class="messaggio"> {$msg} </label>
            </p>
        </div>
EOF;
        ?>
    </body>
</html>
Ma perché hai inserito la logica per l'aggiunta di un utente agli amici nella pagina della bacheca? Operazioni differenti, pagine differenti.

P.S. Quello script era tremendo, e continua a esserlo anche dopo le mie correzioni, perché ci sono molti errori sia logici che tecnici, e il database è strutturato male. Leggi qua e cerca di applicare TUTTI i punti.

Ho provato lo script come lo hai modificato e mi stampa un errore di sintassi:'Parse error: syntax error, unexpected T_SL in /membri/knoweveryone/bacheca_visualizza3.php on line 33'.
Grazie ancora in anticipo per il tuo aiuto,
hackersatifal;)
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
Ma il file contiene solo il codice nel mio post? Non è possibile che non funzioni...
Sì, il file continente solo questo script. Non capisco come possa essere possibile che a te funzioni e a me no, ma mi dà sempre lo stesso errore di sintassi:'Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /membri/knoweveryone/bacheca_visualizza3.php on line 4'. Posteresti aiutarmi a risolvere la questione?
Grazie in anticipo per il tuo aiuto,
Hackersatifal.:)
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
Sì, il file continente solo questo script. Non capisco come possa essere possibile che a te funzioni e a me no, ma mi dà sempre lo stesso errore di sintassi:'Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /membri/knoweveryone/bacheca_visualizza3.php on line 4'. Posteresti aiutarmi a risolvere la questione?
Grazie in anticipo per il tuo aiuto,
Hackersatifal.:)
Qualcuno può aiutarmi?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non uppare di seguito (dalle 08 alle 09), appena può alex ti risponderà

edit
dimenticavo, posta il codice di 'connessione.php', l'errore potrebbe nascere da li
 
Ultima modifica:

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
ciao
non uppare di seguito (dalle 08 alle 09), appena può alex ti risponderà

edit
dimenticavo, posta il codice di 'connessione.php', l'errore potrebbe nascere da li
Sì, scusa per gli up. Comunque ecco il file connessione.php

PHP:
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_nome = "miodatabase";
$db = mysql_connect($db_host, $db_user, $db_password);
if($db == FALSE)
die("Errore nella connessione. Verificare i parametri nel file config.inc.php!");
mysql_select_db($db_nome, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
?>
Grazie in anticipo per il tuo aiuto borgo.
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
continuo a non vedere errori.
tentativi: prova a scrivere connessione.php così
PHP:
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_nome = "miodatabase";
$db = mysql_connect($db_host, $db_user, $db_password) or die("Errore nella connessione. Verificare i parametri nel file config.inc.php!");
mysql_select_db($db_nome, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
?>
e al posto di
header('HTTP/1.0 403 Forbidden');
prova a mettere
header("Status: 403 Forbidden");

poi vediamo se alex passa di qui e vedere se lui riesce a capire

p.s.
fai un tentativo (modifica) alla volta e prova, torni indietro, rispristini il vecchio e fai l'altra per cercare dov'è l'inghippo
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
ciao
continuo a non vedere errori.
tentativi: prova a scrivere connessione.php così
PHP:
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_nome = "miodatabase";
$db = mysql_connect($db_host, $db_user, $db_password) or die("Errore nella connessione. Verificare i parametri nel file config.inc.php!");
mysql_select_db($db_nome, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
?>
e al posto di
header('HTTP/1.0 403 Forbidden');
prova a mettere
header("Status: 403 Forbidden");

poi vediamo se alex passa di qui e vedere se lui riesce a capire

p.s.
fai un tentativo (modifica) alla volta e prova, torni indietro, rispristini il vecchio e fai l'altra per cercare dov'è l'inghippo

Niente da fare: sempre lo stesso errore :confused:
 
Discussioni simili
Autore Titolo Forum Risposte Data
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
romeocharly [PHP] Script per rinominare in automatico le immagini inviate da ftp PHP 0
A [PHP] Script con array con numeri che iniziano per 00 PHP 2
TpD [PHP] Script per organizzazione presenza eventi PHP 3
webmachine [PHP] Script per censurare parole PHP 4
M [PHP] Script per controllo disponibilitá negozio in citta PHP 4
K Script PHP per leggere array.txt Presentati al Forum 3
Mauro Guardiani [PHP] script per caricamento video PHP 0
romeocharly Creare un script/codice in php per collegare un id mysql con un file PHP 0
xone [Vendo] Script php+mysql autocostruito per gestione giacenze magazzino Offerte e Richieste di Lavoro e/o Collaborazione 0
F Script php per IP camera PHP 12
IImanuII Licenza per script in PHP PHP 2
S aiuto per script PHP/OOP PHP 2
filippino Script PHP per estrarre dati estrazioni da sito "10 e lotto" PHP 0
K creare uno script in php , per generare in modo automatico query PHP 2
S countdown in php e script per aprire 2 siti contemporanemante PHP 1
U php-mysql script per convertire valori $_POST PHP 2
IImanuII [Php] script per il conteggio delle mail inviate PHP 40
T [Offro Lavoro] CERCASI PROGRAMMATORE PHP per singoli script Offerte e Richieste di Lavoro e/o Collaborazione 2
V Script per distanza indirizzi [era: Script Php che non capisco se funzioni !] PHP 2
C script php per posizionamento su google PHP 0
R script per redirect php ad orari stabiliti PHP 31
M Script php per cancellare file PHP 1
K Script in PHP per gestione sito da utente PHP 6
A cerco script php per sincro db mysql CMS (Content Management System) 4
M Editare uno script php per arricchirlo PHP 9
M php script per classifica PHP 2
Z query sql e script php per ordinamento dati tabella PHP 2
U aiuto per script php inviare una mail PHP 1
SolidSnake4 miglior script per l'upload di immagini con php su DB PHP 5
H Php script per i .swf giochini PHP 0
G Script php per invio email con controllo sintassi e record MX PHP 0
G Script php per invio email con controllo sintassi e record MX PHP 7
S Script per creare Email in PHP PHP 1
M MySQL e PHP: script particolare per vBulletin! PHP 43
P lanciare script asp (o php) da jquery Javascript 1
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
M Collegamento tra form html e script php PHP 4
felino PHP e script generazione file excel PHP 2
R Primo script in PHP / CSS PHP 4
T [a pagamento] programmatore PHP che mi aiuti a migrare gli script da vecchia versione PHP a nuova Offerte e Richieste di Lavoro e/o Collaborazione 1
Max 1 [PHP] Script che funziona in locale e non online PHP 16
K Help: problema con uno script di booking in php! PHP 0
O [PHP] inviare dati da form e script ajax PHP 0
P [PHP] Aggiungere un mio script a prestashop? PHP 10
D [Javascript] inserire uno script in un file php Javascript 6
Gabriele15497514 php testo errato durante la lettura del file txt quando lo script viene eseguito contemporaneamente PHP 3
D [PHP] script che invii una mail automatica dopo risposta ad una discussione di un forum PHP 0
T interpretare uno script php non fatto da me... PHP 3
O Script PHP e loro visibilità PHP 4

Discussioni simili