Script php per link 'Aggiungi agli amici'?

ciao
mi sembrerebbe assurdo che l'errore sia quello.
comunque tu che sei abile, quale potrebbe essere un errore che da quel tipo di Parse error?
 
ciao
intanto fai queste

<htmllang="it">
correggi (manca uno spazio)
<html lang="it">

<metacharset="utf-8"/>
correggi (manca uno spazio)
<meta charset="utf-8"/>

<ahref="?user={$user}"onclick="retunconfirm('Seisicurodivolerinoltrarelarichiesta?')">Aggiungiagliamici!</a>
correggi (manca uno spazio)
<a href="?user={$user}"onclick="retunconfirm('Seisicurodivolerinoltrarelarichiesta?')">Aggiungiagliamici!</a>

$sql3='SELECT*FROMbachecaWHEREnome=%d';
correggi (aggiungi spazi)
$sql3='SELECT * FROM bacheca WHERE nome=%d';

e verifica anche il resto
 
ciao
intanto fai queste

<htmllang="it">
correggi (manca uno spazio)
<html lang="it">

<metacharset="utf-8"/>
correggi (manca uno spazio)
<meta charset="utf-8"/>

<ahref="?user={$user}"onclick="retunconfirm('Seisicurodivolerinoltrarelarichiesta?')">Aggiungiagliamici!</a>
correggi (manca uno spazio)
<a href="?user={$user}"onclick="retunconfirm('Seisicurodivolerinoltrarelarichiesta?')">Aggiungiagliamici!</a>

$sql3='SELECT*FROMbachecaWHEREnome=%d';
correggi (aggiungi spazi)
$sql3='SELECT * FROM bacheca WHERE nome=%d';

e verifica anche il resto

Tutti gli spazi nel codice c'erano, evidentemente zippandolo si sono rimossi. Forse è meglio che te lo scrivo qui:
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['utente']);
************$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>
 
Ultima modifica:
Tutti gli spazi nel codice c'erano, evidentemente zippandolo si sono rimossi. Forse è meglio che te lo scrivo qui:
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['utente']);
************$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>

Ho risolto: gli spazi erano sostituiti, anche se non si vedeva, dai *.
Grazie ancora per il tuo aiuto (se non avessi postato il codice non me ne sarei accorto):byebye:

EDIT:
Mi sono accorto che, pur non mostrando la scritta 'Aggiungi agli amici!', aggiornando la pagina in cui è inserito lo script, mi inserisce lo stesso l'amico nella tabella, perché?
Se mi aiuterai a risolvere il problema, te ne sarò per sempre grato.:D
 
Ultima modifica:
Ho risolto: gli spazi erano sostituiti, anche se non si vedeva, dai *.
Grazie ancora per il tuo aiuto (se non avessi postato il codice non me ne sarei accorto):byebye:
EDIT:
Mi sono accorto che, pur non mostrando la scritta 'Aggiungi agli amici!', aggiornando la pagina in cui è inserito lo script, mi inserisce lo stesso l'amico nella tabella, perché?
Se mi aiuterai a risolvere il problema, te ne sarò per sempre grato.:D
Credo di aver individuato il problema: in questa riga di codice
PHP:
if ($user!== 0) {
si dice se la variabile user non è uguale a 0 fai..., ma la variabile user non è mai uguale a zero nel mio caso, visto che la prelevo sempre, quindi, quando questa si setta automaticamente, la condizione è sempre vera e, aggiornando la pagina, si esegue comunque l'aggiunta dei dati in tabella. Come potrei fare a risolvere questa parte di codice? Ho provato così
PHP:
if(isset($_GET['user'])){
, ma aggiunge comunque, aggiornando la pagina, i dati all'interno della tabella mysql. Mi aiutereste a risolvere questo inghippo?
Grazie a tutti in anticipo per il vostro aiuto,
hackersatifal :D
 
PHP:
$user = !empty($_GET['id']) ? (int)$_GET['id'] : 0;
La variabile $user prende il valore di $_GET['id'] se $_GET['id'] non è vuoto o non esiste. Quindi, per qualche ragione, $_GET['id'] è sempre esistente (il che significa che nel tuo URL c'è sempre ?user=qualcosa).
 
PHP:
$user = !empty($_GET['id']) ? (int)$_GET['id'] : 0;
La variabile $user prende il valore di $_GET['id'] se $_GET['id'] non è vuoto o non esiste. Quindi, per qualche ragione, $_GET['id'] è sempre esistente (il che significa che nel tuo URL c'è sempre ?user=qualcosa).

L'URL dal quale estrai l'id è un URL sempre strutturato in questo modo: result_search2.php?id=nomeutente.
Questa pagina ha un iframe dove viene integrata la pagina con lo script che stiamo tentando di aggiustare. L'URL di questa pagina dentro l'iframe è bacheca_visualizza3.php?id=nomeutente, quindi quando tu scrivi che la variabile $user è un get dell'id questo risulta sempre vero e, quindi, lo script si esegue sempre, anche solo aggiornando la pagina, mentre io vorrei che si esegua solo cliccando sul link 'Aggiungi agli amici' che apre una pagina di conferma.
Ho notato, rileggendo il codice, che tu scrivi
PHP:
 if ($user != 0)
, ma l'azione deve avvenire SOLO se la pagina di conferma ?user=nomeutente si apre e avviene la conferma, mentre come scrivi tu l'azione deve avvenire se $user è diverso da 0 (condizione sempre vera).
Quindi come potrei scrivere in modo che si riesca ad eseguire l'insert nella tabella SOLAMENTE cliccando sul link 'Aggiungi agli amici'?
Grazie ancora per il tuo aiuto,
hackersatifal :D
 
ciao
secondo me ti stai perdendo in un bicchier d'acqua.
il controllo che ti ha messo alex funzia
es (non so come si chiami la pagina quindi metto a caso)
caso 1. accesso normale
HTML:
<a href="pagina_a_caso.php?id=asdrubale">clicca</a>
caso 2. tentativo accesso fraudolento (metto gli spazi)
www. tuo_sito . com/pagina_a_caso.php

per cui
PHP:
$user = !empty($_GET['id']) ? (int)$_GET['id'] : 0;

nel caso 1.
$user assume il valore "asdrubale"

nel caso 2.
$user assume il valore 0

da cui
PHP:
if ($user !== 0) { //verifico non solo il valore ma anche il tipo in questo cas diverso dall'intero 0
//faccio quello che devo
}else{
//errore
}
 
ciao
secondo me ti stai perdendo in un bicchier d'acqua.
il controllo che ti ha messo alex funzia
es (non so come si chiami la pagina quindi metto a caso)
caso 1. accesso normale
HTML:
<a href="pagina_a_caso.php?id=asdrubale">clicca</a>
caso 2. tentativo accesso fraudolento (metto gli spazi)
www. tuo_sito . com/pagina_a_caso.php

per cui
PHP:
$user = !empty($_GET['id']) ? (int)$_GET['id'] : 0;

nel caso 1.
$user assume il valore "asdrubale"

nel caso 2.
$user assume il valore 0

da cui
PHP:
if ($user !== 0) { //verifico non solo il valore ma anche il tipo in questo cas diverso dall'intero 0
//faccio quello che devo
}else{
//errore
}

Il problema non è che è sbagliato come preleva l'id, ma che $user è sempre diverso da 0 (lasciamo stare l'accesso fraudolento) e quindi si esegue sempre lo script, ma a me serve che si esegua solo nel caso in cui la pagina ?user=nomeutente sia aperta e venga cliccato OK.
Comunque guarda il codice della nuova discussione che ho aperto, perché mi dà quell'errore?
Grazie ancora per il tuo aiuto.
 

Discussioni simili