WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   kleines PHP Prob... (http://www.wcm.at/forum/showthread.php?t=23976)

renew 21.06.2001 11:08

kleines PHP Prob...
 
Ich versuche(hab ich eigentlich schon gemacht) einen counter für meine Homepage zu schreiben. Der funktioniert auch schon, nur will ich jetzt auch noch die IP Adresse überprüfen, damit nicht immer weitergezählt wird, wenn jemand auf aktualisieren klickt.....

So weit so gut, nur häng ich beim schreiben der IP Adresse in die MySQL Datenbank. Vielleciht weiß ja jemand was ich falsch mache....

Das is jetzt nur der Teil mit der IP Adresse, weil wie gesagt der Rest funktioniert ja schon.
PHP-Code:

$link mysql_pconnect($host$user$passwd);

$query_ip "use $db";
if ( !
mysql_query($query_ip$link) )
  die(
"Die Datenbank $db existiert nicht.");

// Ermittlung der IP des letzten Users
$query_ip "select ip from count";
$res_ip mysql_query($query_ip$link);
if ( !
$res_ip )
  die(
"Die Anfrage '$query_ip' konnte nicht ausgeführt werden.");

while ( 
$data_ip mysql_fetch_array($res_ip) ) {
  list(
$key_ip$value_ip) = each($data_ip);
}

$ip_old $value_ip;

$ip getenv("HTTP_X_FORWARDED_FOR");

$result strcasecmp($ip,$ip_old);

if(
$result != 0)
{
  
$udate2 "update count set ip = $ip";
  if (!
$udate2_ok)
      die(
"Das Updaten der Datenbank IP schlug fehl");


Ich bekomm immer als "Fehlermeldung": Das Updaten der Datenbank IP schlug fehl. Hat also nicht wirklich funktioniert.

Das Feld ip in der Tabelle count ist vom Typ varchar(100). Wenn ich statt $ip eine IP Adresse händisch schreibe kann er in die DB schreiben. Auch wenn ich irgendeinen anderen Text eintrage funktioniert das schreiben in die Datenbank. Nur die Variabel $ip lässt sich nicht eintragen.

Hab auch schon überprüft ob $ip eh ein String ist, aber das ist einer.

Wissts ihr woran es noch liegen könnt?

Sesa_Mina 21.06.2001 13:33

Probier mal

$udate2 = "update count set ip = ".$ip;

statt

$udate2 = "update count set ip = $ip";

vielleicht liegts ja daran ;)

renew 21.06.2001 17:02

Na an dem liegts leider auch nicht. :heul:

Das komische is: bei meinem Gästebuch(hab nicht ich geschrieben) funktioniert genau das, nur halt statt update, wird ein neuer Datensatz hinzugefügt.(insert into......)
Und dort wird die IP Adresse auch in ein Feld mit dem Typ Varchar(100) eingetragen. :confused:

renew 21.06.2001 17:32

Hab den Fehler gefunden(endlich..)

Man darf nicht $udate2 = "update count set ip = $ip"; schreiben, sondern man muss anscheinend der DB zeigen, dass da ein String daher kommt und das ganze so schreiben:
$udate2 = "update count set ip = '$ip"';

Und das hat mich den ganzen Vormittag, und jetzt auch noch eine halbe Stunde beschäftigt... ;)
Na wurscht, jetzt funktionierts endlich. :) :cool:

Philipp 21.06.2001 17:53

Das
PHP-Code:

mysql_pconnect($host$user$passwd

ist keine so gute idee bei virtuellen Accounts und kann möglicherweise zur deaktivierung des Accounts führen. Ich würde es durch
PHP-Code:

mysql_connect($host$user$passwd

ersetzten und die Datenbank am Ende des Scripts möglichst schließen.

Eine persistente Verbindung zur MySQL Datenbank sollte man nur auf dedizierten Servern öffnen

renew 21.06.2001 18:54

@phil
Die Abfrage die ich da geschrieben hab, war nicht vollständig. Das heißt, das ich die verbindung normalerweise eh zum Server wieder trenne, am Ende des Scripts.

Das was ich gepostet hab, ist nur ein Teil meines Copunter Scripts. :)

aber danke für den Tipp, mit dem connect - pconnect.


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag