Problema con un comando che non conosco www.prova.it/?id=2

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
Ciao a tutti innanzitutto mi scuso per il titolo non preciso ma non sapevo come descrivere il probelma.
Vorrei sapere come posso fare ad far apparire nel link l'id del utente loggato in modo che possa richiamare i suoi dati dalle tabelle mysql.
Ad esempio www.prova.it/?id=2
cosi che nella pagina possa richimare dati di mysql in modo semplice.
Se avete link che parlano di questa cosa o qualsiasi altra cosa me le passereste perfavore.
Vi ringrazio e mi scuso se vi faccio perdere tempo ma in questo argomento sono abbastanza nabbo.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
immagino che quando si logga l'utente vada ad una sua pagina riservata o vedere qualcosa che gli altri non loggati non possano, giusto?
suppongo che schematicamente sia una cosa del genere (scrivo in pseudo codice)
Codice:
se log OK
$_session['username']=$username
//e eventualmete passi anche l'id
$session['id']=$id
reindirizza alla riservata
altrimenti esci

poi nella pag riservata (immagino sia così)
PHP:
<?php
session_start();
if(!isset($_session['username'])){
	//reindirizzamento a dove vuoi
}else{
	//...
	echo "vuoi vedere la tua scheda?<br />";
	echo "<a href=\"scheda.php?id=".$_session['id']."\">vedi</a>";
	//.....
}
?>
nella pg scheda.php
PHP:
<?php
if(!isset($_GET['id'])){
	//reindirizza a dove vuoi
}else{
	//estrai i dati dalla scheda
	//dat di connessione
	$q="SELECT *  FROM tabella WHERE id=".$_GET['id'];
	//..ecc....
}
?>
questo schematicamente se ho capito quello che vuoi fare
 
Ultima modifica di un moderatore:

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Naturalmente non bisogna dimenticare di filtrare quel parametro GET passato in query come misura di sicurezza.
 

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
Questo è il codice per memorizzare la sessione:
PHP:
// ora creo una sessione con l'id dell'utente  che lo farà restare connesso tutto il tempo della navigazione alle pagine protette da login


while($row = mysql_fetch_array($res)) {

session_start();

$idutente = $row['id'];

$nomeutente = $row['username'];

$_SESSION['id_utente'] = $idutente;

$_SESSION['nome_utente'] = $nomeutente;

// e infine reindirizzo l'utente nella pagina protetta da login

header("location: paginasegreta.php/);


}
Quindi per ridirezionare l'utente con l'id giusto dovrei fare :
PHP:
<a href="prova.it/?=$_SESSION[id_utente] "> qui </a>
giusto?

e dopo per richiamare i valori devo solo estrarli dal database con insert e impostarli ad una variabile è corretto?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
si
devi recuparere l'id con es.
$id=$_GET['id'];
e fare la classica select alla tabella WHERE id = $id

quello che non capisco è a cosa riinvii: "prova.it/ ???

p.s.
il vampiro ha sempre ragione a puntualizzare, io davo per scontato il filtraggio del get
 

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
Scusa ma sono tanto nabbo sul php e non ho capito io dovrei creare un file
PHP:
<?php
if(!isset($_GET['id'])){
    //reindirizza a dove vuoi
}else{
    //estrai i dati dalla scheda
    //dat di connessione
    $q="SELECT *  FROM tabella WHERE id=".$_GET['id'];
    //..ecc....
}
?>
che mi prende l'id dell utente connesso e fino a qui ci sono ma questo file a cosa lo dovrei collegare?
Hai dei link di qualche pagina che descriva questi passaggi oppure ti chiedo perfavore di aiutarmi a risolvere questo mio problema?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
e si che devi creare un file php se guardi ,a mia prima risposta mi sembra spiegato.
comunque ti ripeto.
quando l'utente si logga da qualche parte dovrà arrivare giusto? e questo devi saperlo tu
nella pagina in cui arriva trovarà il link
PHP:
 echo "<a href=\"scheda.php?id=".$_session['id']."\">vedi</a>";
nella pagina scheda.php come detto devi leggere con get la stringa e fare la select al db
 

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
Credo di aver capito xD ma se lo metto dentro al comando:
header ("location: prova.it?id=".$_session[id]."");
non va come potrei fare ?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto scrivi così
PHP:
<?php
header ("location: prova.it?id={$_session[id]}");
?>
poi stai attento quando si usa header non ci deve essere prima alcun output html, es un echo o anche uno spazio prima del tag di php, anche il <!DOCTYPE html> è un output

edit
posta lo script dove lo stai usando
 
Ultima modifica:

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
Lo script del login è il seguente:

PHP:
<?php
//variabili di connessione
$db_host = "localhost";
$db_user = "laemmeallapi";
$db_password = "";
$db_name = "my_laemmeallapi";

//connetto il database
$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');
?>
<html>
<head>
<title>Pagina di Prova Login in Php e Mysql</title>
</head>
<body>

<form action='<? echo $_SERVER['PHP_SELF']; ?>?login=ok' method='POST'>

<b>Username</b><br>
<input type='text' name='user'><br>
<b>Password</b><br>
<input type='password' name='pass'><br>

<input type='submit' value='Effettua il login'>


</form>

<?php

// recupero di valori inviati dal form: user e pass

$user = $_POST['user'];
$pass = $_POST['pass'];

$risp = "ok";
$login = $_GET['login'];

// questo serve per evitare di ricevere subito un messaggio dallo script

if ( $login == $risp ) {

// controllo che entrambi i valori siano stati compilati

if ( $user && $pass ) {

// effettuo l'escape per i valori speciali per evitare problemi con le query

$user = mysql_real_escape_string($user);
$pass = mysql_real_escape_string($pass);

// preparo una query cioè una richiesta al database che vede se esistono i valori appena inseriti nella tabella creata precedentemente

$sql = "SELECT * FROM users WHERE username = '$user' AND password = MD5('$pass')";
$res = mysql_query($sql) or die (mysql_error());

// ora se i dati inseriti sono quelli esatti presenti all'interno della tabella possiamo far effettuare il login

if ( $res == TRUE ) {

// ora creo una sessione con l'id dell'utente  che lo farà restare connesso tutto il tempo della navigazione alle pagine protette da login


while($row = mysql_fetch_array($res)) {

session_start();

$idutente = $row['id'];

$nomeutente = $row['username'];

$_SESSION['id_utente'] = $idutente;

$_SESSION['nome_utente'] = $nomeutente;

// e infine reindirizzo l'utente nella pagina protetta da login



}
header ("location: paginasegreta.php?id={$_session[id]}");

} 



echo "Username o Password non corrette";





} else {

echo "Non sono stati compilati tutti i dati obbligatori";


}

}


?>


</body>
</html>
 

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
E lo script della pagina in cui verrà reindirizzato è:

HTML:
<?php

// apro la sessione

session_start();

// vedo se id_utente e nome_utente non esistono, se si visualizzano il contenuto segreto

$var = $_SESSION['id_utente'];

$var2 = $_SESSION['nome_utente'];

if ( $var == "" && $var2 == "" ){

echo "Non hai le credenziali per visualizzare il contenuto di questa pagina.";

//?ip
if(!isset($_GET['id'])){
    //reindirizza a dove vuoi
}else{
    //estrai i dati dalla scheda
    //dat di connessione
    $q="SELECT *  FROM tabella WHERE id=".$_GET['id'];
    //..ecc....
}

?>
 <meta http-equiv="refresh" content="1; url=login.php "/>
<?
exit();
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 <meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" type="text/css" href="setile.css">
<TITLE></TITLE>
</HEAD>
<BODY>
<div id="spessore">
<!--Testa!-->
 <div class="header">
  <div id="logo">
  </div>
  <div id="banner">
  <script type="text/javascript">
/* <![CDATA[ */
document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js.ad/size=728X90/r='+new Date().getTime()+'"><\/s'+'cript>');
/* ]]> */
</script>
  </div>
 </div>
<!--Fine Testa!-->


<!--Inizio Menu!-->
<div class="contenitoremenu">
 <div class="centrare" align="center">
 <div id="menuuno">
  <div class="indice">
   <a href="#">Home</a>
  </div><div class="barra"></div>
  <div class="indice">
   <a href="#">Pay per click</a>
  </div><div class="barra"></div>
  <div class="indice">
   <a href="#">Pay per lead</a>
  </div><div class="barra"></div>
  <div class="indice">
   <a href="#">Pay per see</a>
  </div><div class="barra"></div>
  <div class="indice">
   <a href="#">Il mio account</a>
  </div>
  <div class="spazio"></div>
 </div>

 <!--FINEE PRIMO MENU!-->

 <div id="menubasso">
  <div class="cercagoogle">
<form action="http://www.google.it" id="cse-search-box" target="_blank">
  <div>
    <input type="hidden" name="cx" value="partner-pub-6996316624502105:7362224104" />
    <input type="hidden" name="ie" value="UTF-8" />
    <input type="text" name="q" size="20" />
    <input type="submit" name="sa" value="Cerca" />
  </div>
</form>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script>
<script type="text/javascript" src="http://www.google.com/cse/t13n?form=cse-search-box&t13n_langs=en"></script>

<script type="text/javascript" src="http://www.google.it/coop/cse/brand?form=cse-search-box&amp;lang=it"></script>


  </div>
  <div class="login">
  Accedi
  </div>
  <div class="registrati">
  Registrati
  </div>
 </div>

<div id="menudue">
  <div class="indicedue">
   <a href="#">Statistiche</a>
  </div><div class="barra"></div>
   <div class="indicedue">
   <a href="#">Referenti</a>
  </div><div class="barra"></div>
  <div class="indicedue">
   <a href="#">Offerte in sospeso</a>
  </div><div class="barra"></div>
  <div class="indicedue">
   <a href="#">Pay per see</a>
  </div><div class="barra"></div>
  <div class="indicedue">
   <a href="#">Richiedi il pagamento</a>
  </div>
  <div class="spazio"></div>
  </div>
 </div>
</div>

<!--fine menu!-->


<div class="contenitorecorpo">
<!--INIZIO BANNER SINISTRA!-->
<div id="contenitorebannersn">
<script type="text/javascript">
/* <![CDATA[ */
document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js2.ad/size=120X600/r='+new Date().getTime()+'"><\/s'+'cript>');
/* ]]> */
</script>
 </div>

<!--FINE BANNER SINISTRA!--> 

<!--INIZIO CORPO!-->
<div id="componentetesto">
Soldi nel tuo account: $soldi;
I Tuoi Reff: $reff;
Offerte completate: $offertecompletate;
<div class="bannercorpo" align="center">
<script type="text/javascript">
/* <![CDATA[ */
document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js2.ad/size=728X90/r='+new Date().getTime()+'"><\/s'+'cript>');
/* ]]> */
</script>
</div>
</div>
<!--FINE CORPO!-->


<!--INIZIO MENU DESTRO!-->
<div id="contenitorebannerdsx">
<script type="text/javascript">
/* <![CDATA[ */
document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js2.ad/size=120X600/r='+new Date().getTime()+'"><\/s'+'cript>');
/* ]]> */
</script>
 </div>
</div>
<!--fine spessore!-->
 </div>
<!--FINE MENU DESTRO!-->

<!--Inizio footer!-->
</DIV>
<p class="bac" align="center">

HippoCash. Il sito che pensa al tuo guadagno.<br>
Copyright ©2012 by Andrea & federico<br>
All rights reserved.
</p>

<!--Fine Footer!-->

<P>&nbsp;</P>

</BODY>
</HTML>

Ho fatto tutto per bene?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ecco la prima parte con alcune correzioni
leggi i commenti
PHP:
<?php
session_start();//la session start deve essere la prima riga prima di qualsiasi output html
//variabili di connessione
//queste ti conviene metterele in un file separato es. connessione.php
$db_host = "***";
$db_user = "*****";
$db_password = "";
$db_name = "*****";
//connetto il database
$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');
//e richiamarle con
// require_once "connessione.php";
//ricordati l'eventuale percorso
//in questo modo le richiami nelle varie pagine scrivendole una volta sola
?>
<!DOCTYPE html>
<html>
<head>
<title>Pagina di Prova Login in Php e Mysql</title>
</head>
<body>
<form action='<?php echo $_SERVER['PHP_SELF']; ?>?login=ok' method='POST'>
<b>Username</b><br>
<input type='text' name='user'><br>
<b>Password</b><br>
<input type='password' name='pass'><br>
<input type='submit'  name="log" value='Effettua il login'><!--prima correzzione -->
</form>
<?php
if(isset($_POST['log'])){//altra correzione
	// recupero di valori inviati dal form: user e pass
	$user = $_POST['user'];
	$pass = $_POST['pass'];
	$risp = "ok";
	$login = $_GET['login'];
	// questo serve per evitare di ricevere subito un messaggio dallo script
	if ( $login == $risp ) {
		// controllo che entrambi i valori siano stati compilati
		if ( $user && $pass ) {
			// effettuo l'escape per i valori speciali per evitare problemi con le query
			$user = mysql_real_escape_string($user);
			$pass = mysql_real_escape_string($pass);
			// preparo una query cioè una richiesta al database che vede se esistono i valori appena inseriti nella tabella creata precedentemente
			$sql = "SELECT * FROM users WHERE username = '$user' AND password = MD5('$pass')";
			$res = mysql_query($sql) or die (mysql_error());
			// ora se i dati inseriti sono quelli esatti presenti all'interno della tabella possiamo far effettuare il login
			//qui userei mysql_num_rows
			if ( mysql_num_rows($res) > 0 ) {
				// ora creo una sessione con l'id dell'utente  che lo farà restare connesso tutto il tempo della navigazione alle pagine protette da login
				//non sereve il while il record estratto è uno solo
				//while($row = mysql_fetch_array($res)) {
					$row = mysql_fetch_array($res);
					//session_start(); da eliminare qui NON è la prima riga
					//poi perchè fai due passaggi?
					//$idutente = $row['id'];
					//$nomeutente = $row['username'];
					$_SESSION['id_utente'] = $row['id'];
					$_SESSION['nome_utente'] = $row['username'];
					// e infine reindirizzo l'utente nella pagina protetta da login
				//}
				//a che ti serve trasmettere la sessione dell'id anche per querystringa?
				//verifica secondo me l'header ti da errore
				header ("location: paginasegreta.php?id={$_session[id]}");
				exit();
			}else{//manca l'else per la verifica di usetr e pass
				echo "Username o Password non corrette";
				//qui devi rimandare da qualche parte
				echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
			}
		}else{
			echo "Non sono stati compilati tutti i dati obbligatori";
			//visualizzo il messaggio e ritorno al form pulito
			echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		}
	}
}//fine if 
?>
</body>
</html>

provala, mal che vada non funzia

p.s.
indenta bene gli script, sono più facilmente leggibili
poi non usare lo short tag <? ma <?php
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa avevo fatto un paio di errori di scrittura, guarda i commenti
PHP:
<?php
//..............
                    $row = mysql_fetch_array($res);
                    //session_start(); da eliminare qui NON è la prima riga
                    //poi perchè fai due passaggi?
                    //$idutente = $row['id'];
                    //$nomeutente = $row['username'];
                    $_SESSION['id_utente'] = $row['id'];
					//qui metti un var_dump e dimmi cosa restituiscono
					var_dump($row['id']);
                    $_SESSION['nome_utente'] = $row['username'];
                    // e infine reindirizzo l'utente nella pagina protetta da login
                //}
                //a che ti serve trasmettere la sessione dell'id anche per querystringa?
                //verifica secondo me l'header ti da errore
                header ("location: paginasegreta.php?id={$_SESSION['id']}");//correggi (sorry) $_session in $_SESSION['id_utente']
                //se ancora non funzione correggi tutta la riga in
				//header ("location: paginasegreta.php?id=".$_SESSION['id_utente']."");
				exit();
            }else{//manca l'else per la verifica di usetr e pass
//........
?>
 

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
Grazie mille per tutto adesso funziona. Un ultima domanda per continuare a trasmettere il solito id nelle altre pagine come posso fare?
 
Discussioni simili
Autore Titolo Forum Risposte Data
L [PHP] problema parsing con comando file get contents PHP 7
napuleone problema con comando HTML e CSS 5
C Problema con il CSS per il comando text-align HTML e CSS 10
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
N Problema con position absolute e overflow HTML e CSS 4
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
O problema con query PHP 4
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema con eccessiva nitidezza apertura Camera Raw Photoshop 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3
M Problema inserimento parole con apostrofo nel db PHP 5
C Problema con dati meteo xml XML 1
S Problema con infrarossi videocamera IP Cam e Videosorveglianza 1
V Problema con librerie allegro5 c++ C/C++ 1

Discussioni simili