View Full Version : (PHP)Script per catturare Ip,mi restituisce errore!
DavidTwister
04-07-2004, 10:44
Premetto che sono alle primissime armi con il php!
Mi serve di creare uno script per catturare gli IP degli utenti che si collegano al mio sito. Per ora stò provando tutto in locale, ho creato la pagina php con il seguente codice:
<html>
<head>
<title>il mio primo script</title>
</head>
<body>
<?php
echo "hello world";
$indirizzo = $REMOTE_ADDR;
$risultato=mysql_query("insert into visite (ora,indirizzo) values (now(), \"$indirizzo\"));
?>
</body>
</html>
Ho aperto apache,mysql ed ho provato ad aprire questa pagina ma mi restituisce il seguente errore:
"Parse error: parse error, unexpected $end in C:\Programmi\Apache Group\Apache2\htdocs\tentativo.php on line 12"
Cosa sbaglio??? :confused:
Originariamente inviato da DavidTwister
Premetto che sono alle primissime armi con il php!
Mi serve di creare uno script per catturare gli IP degli utenti che si collegano al mio sito. Per ora stò provando tutto in locale, ho creato la pagina php con il seguente codice:
<html>
<head>
<title>il mio primo script</title>
</head>
<body>
<?php
echo "hello world";
$indirizzo = $REMOTE_ADDR;
$risultato=mysql_query("insert into visite (ora,indirizzo) values (now(), \"$indirizzo\"));
?>
</body>
</html>
Ho aperto apache,mysql ed ho provato ad aprire questa pagina ma mi restituisce il seguente errore:
"Parse error: parse error, unexpected $end in C:\Programmi\Apache Group\Apache2\htdocs\tentativo.php on line 12"
Cosa sbaglio??? :confused:
prova con $_SERVER['REMOTE_ADDR'];
per quanto riguarda l'errore che linea è la 12?
DavidTwister
04-07-2004, 10:58
Bhè...contandole la linea 12 è quella dove c'è il tag di fine codice html.Cioè tutta la pagina html/php è formata da solo quelle linee di codice che ho postato.
Per quanto riguarda il codice che te hai suggerito,al posto di cosa devo metterlo?
Grazie.;)
Originariamente inviato da DavidTwister
Bhè...contandole la linea 12 è quella dove c'è il tag di fine codice html.Cioè tutta la pagina html/php è formata da solo quelle linee di codice che ho postato.
Per quanto riguarda il codice che te hai suggerito,al posto di cosa devo metterlo?
Grazie.;)
dovresti metterlo al posto di questo
$indirizzo = $REMOTE_ADDR;
cmq questo qui è errato
$risultato=mysql_query("insert into visite (ora,indirizzo) values (now(), \"$indirizzo\"));
1) mancano degli apici di chiusura
2) non hai aperto nessuna connessione con nessun database (nè l'hai chiusa), quindi quella query va a vuoto
3) ricordati anche di creare la tabella visite nel db ovviamente e di selezionare il database dopo aver aperto la connessione
per quanto riguarda la connessione devi fare qualcosa di simile
$connessione = mysql_connect("127.0.0.1",$dbusername,$dbpassword);
mysql_select_db($nome_del_db);
qua poi metti la tua query
e alla fine
mysql_close($connessione);
ciao
DavidTwister
04-07-2004, 19:37
Ho fatto come avete detto ed ora non mi restituisce più l'errore.adesso la domanda,da tipico novello del php, è: come faccio a leggere i risultati dello script??
cioè come faccio a vedere se effettivamente mi scrive l'Ip di chi ha visualizzato la pagina?se apro phpmyadmin e seleziono la tabella, non mi fa vedere se ha scritto o meno l'indirizzo ip.dove lo dovrei vedere?
Grazie.;)
Originariamente inviato da DavidTwister
Ho fatto come avete detto ed ora non mi restituisce più l'errore.adesso la domanda,da tipico novello del php, è: come faccio a leggere i risultati dello script??
cioè come faccio a vedere se effettivamente mi scrive l'Ip di chi ha visualizzato la pagina?se apro phpmyadmin e seleziono la tabella, non mi fa vedere se ha scritto o meno l'indirizzo ip.dove lo dovrei vedere?
Grazie.;)
devi guardare i dati registrati nella tabella, cerca che si vede subito (purtroppo nn tocco nulla di php/apache/mysql da più di un anno e non ricordo di preciso)
DavidTwister
04-07-2004, 19:55
Sarebbe il tasto "Mostra" in phpmyadmin, ma non me lo rende disponibile perchè non ha salvato alcun indirizzo nella tabella;evidentemente sbaglio ancora qualcosa nel codice:ora lo posto per intero:
<html>
<head>
<title>il mio primo script</title>
</head>
<body>
<?php
echo "hello world";
$connessione = mysql_connect("localhost", "root", "");
$selezione_db=mysql_select_db("prova_php", $connessione);
$indirizzo = $REMOTE_ADDR;
$risultato = mysql_query("INSERT INTO visite (ora,indirizzo) values (now(), \"$indirizzo\")");
mysql_close($connessione);
?>
</body>
</html>
dov'è l'errore??
prova cosi
<html>
<head>
<title>il mio primo script</title>
</head>
<body>
<?php
echo "hello world";
$connessione = mysql_connect("localhost", "root", "");
mysql_select_db("prova_php");
$indirizzo = $REMOTE_ADDR;
echo "prova IP: $indirizzo";
$data=now();
$risultato = mysql_query("INSERT INTO visite VALUES ('$data', '$indirizzo');")
or die ("non viene eseguita la query");
mysql_close($connessione);
?>
</body>
</html>
DavidTwister
04-07-2004, 20:38
fatto;mi restituisce questo:
hello worldprova IP:
Fatal error: Call to undefined function: now() in C:\Programmi\Apache Group\Apache2\htdocs\tentativo2.php on line 15
per curiosità ma da dove hai preso la funzione now()?
no perchè non esiste nel php....
dai un'occhiata qui e troverai tutto sulla funzione che ti serve x la data
http://www.php.net/manual/it/ref.datetime.php
p.s. usa la funzione date, guarda nel manuale x info
e cmq neanche
$indirizzo = $REMOTE_ADDR;
funziona, prova come già detto con
$indirizzo = $_SERVER['REMOTE_ADDR'];
DavidTwister
04-07-2004, 20:52
me l'hanno suggerita su un altro forum di supporto php.
quindi quale dovrei mettere al posto di now()??
la getdate?o la localtime?
DavidTwister
04-07-2004, 21:03
non avevo letto la modifica!;)
ora l'indirizzo ip lo visualizza;leggo come funziona la date e provo a metterla e ti dico se funziona!!;)
DavidTwister
04-07-2004, 21:21
Ho provato così:
<head>
<title>il mio primo script</title>
</head>
<body>
<?php
echo "hello world";
$connessione = mysql_connect("localhost", "root", "");
mysql_select_db("prova_php");
$indirizzo = $_SERVER['REMOTE_ADDR'];
echo "prova IP: $indirizzo\n";
echo date ("Y m d h:i:s ");
$risultato = mysql_query("INSERT INTO visite VALUES ('date (Y m d h:i:s )', '$indirizzo');")
or die ("non viene eseguita la query");
mysql_close($connessione);
?>
</body>
</html>
Ma mi restituisce questo:
hello worldprova IP: 127.0.0.1 2004 07 04 10:19:42 non viene eseguita la query
Perchè non mi esegue la query??che sbaglio:muro: ?
nella query hai dimenticato i doppi apici in date (Y m d h:i:s )
fai così
$risultato = mysql_query("INSERT INTO visite VALUES ('". date("Y m d h:i:s")."', '$indirizzo');")
ciao :)
DavidTwister
04-07-2004, 21:46
Originariamente inviato da SteR9
nella query hai dimenticato i doppi apici in date (Y m d h:i:s )
fai così
$risultato = mysql_query("INSERT INTO visite VALUES ('". date("Y m d h:i:s")."', '$indirizzo');")
ciao :)
*****edit****
Ora funziona!!!Grazie mille a tutti per l'aiuto e per la pazienza!!!
Ps:a cosa serve il punto prima della funzione date all'interno della query?:confused: ;)
Originariamente inviato da DavidTwister
*****edit****
Ora funziona!!!Grazie mille a tutti per l'aiuto e per la pazienza!!!
Ps:a cosa serve il punto prima della funzione date all'interno della query?:confused: ;)
serve a concatenare la stringa...se tu noti prima di mettere il punto ho chiuso la stringa per poi riaprirla dopo un altro punto...
ciao :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.