SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 26.06.2009, 19:33:30
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
ip2long(), unsigned und intval()

Hi,

ich bin gerade etwas verwirrt. Warum ergibt das drei verschiedene Ergebnisse:
Code:
$ip       = gethostbyname('www.example.com');
$long     = ip2long($ip);
$sinteger = intval($long);
$unsigned = sprintf('%u', ip2long($ip));
$integer  = intval($unsigned);
if ($long == -1 || $long === FALSE) {
    echo 'Ungültige IP, versuchen Sie es noch einmal';
} else {
    echo $ip       . "<br />\n";                              // 208.77.188.166
    echo $long     . " > " . long2ip($long)     . "<br />\n"; // -800211802 IP korrekt
    echo $sinteger . " > " . long2ip($sinteger) . "<br />\n"; // -800211802 IP korrekt
    echo $unsigned . " > " . long2ip($unsigned) . "<br />\n"; // 3494755494 IP korrekt
    echo $integer  . " > " . long2ip($integer)  . "<br />\n"; // 2147483647 IP falsch
}
Warum sind long, unsigned und integer alle unterschiedlich. unsigned und integer vermutlich weil ich ein 32Bit-System einsetze, aber long und unsigned verstehe ich nicht. Liegt das auch an meinem 32Bit-System?

Ich wollte auf diese Art einen möglichst schnellen Integer-Vergleich in der MySQL-Datenbank realisieren. Soll ich statt unsigned dafür lieber sinteger nehmen und meine Datenbank von INT(10) unsigned auf INT(10) umstellen? Wie halte ich das später kompatibel zu 64 Bit?

EDIT:
Ok hängt mit 32Bit zusammen. Bleibt nur noch mein Datenbankproblem.
__________________
meine Scripte

Geändert von mgutt (30.06.2009 um 20:24:31 Uhr)
Mit Zitat antworten
  #2  
Alt 30.06.2009, 20:23:50
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
AW: ip2long(), unsigned und intval()

Also $unsigned resultiert das gleiche Ergebnis wie INET_ATON() in MySQL. Demnach werde ich $unsigned nutzen und in MySQL "INT(10) unsigned" als Spaltenwert hinterlegen.

EDIT:
Dadurch hat sich ein kleines anderes Problem ergeben. Und zwar beim Erstellen der MySQL-Abfragen unterscheide ich aus Sicherheitsgründen zwischen Integer mit intval() oder String mit mysql_real_escape_string(). Durch einen kleinen Test bin ich nun dazu gekommen, dass ich neben intval() auch floatval() einsetze, wenn ich weiß, dass die Zahl größer ist, als es intval() erlaubt:
Code:
$crc32  = sprintf('%u', crc32('example.com')); // 3069857465
$ucrc32 = sprintf('%u', $crc32);               // 2147483647
$dcrc32 = sprintf('%d', $crc32);               // 2147483647
$icrc32 = intval($crc32);                      // 2147483647
$ocrc32 = sprintf('%.0f', $crc32);             // 3069857465
$fcrc32 = floatval($crc32);                    // 3069857465
floatval() gibt den Wert mit Kommastellen zurück. Wer das nicht will, soll die sprintf()-Variante nutzen. Bitte aber nicht vergessen, dass float rundet. Wer das auch nicht will, muss sich mit preg_replace() behelfen.
__________________
meine Scripte

Geändert von mgutt (30.06.2009 um 21:24:39 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Join Statement? tombola MySQLi/PDO_MySQL 0 23.07.2008 15:16:25
Unsigned int Major PHP Entwicklung und Softwaredesign 1 14.12.2007 01:16:24
intval 'berechnet' falsch !!! Webbing PHP Grundlagen 7 29.11.2007 20:13:36
INNER JOIN Zudecke MySQLi/PDO_MySQL 14 23.08.2005 13:28:40


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:10:20 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.


© 2001-2023 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt