php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-03-2005, 13:23
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard is_integer und $_GET

Hallo zusammen

bei einem GalleryScript, bei dem ich das gewünschte Bild (Nummer)
mittels $_GET übertrage, habe ich ein Verständnisproblem mit der is_integer().
Zur Prüfung der $_GET wollte ich eigentlich is_integer() verwenden, da die
Zahlen immer Integer sind. Nur gibt mir is_integer() bei der Prüfung nie
true. Wenn ich hingegen is_numeric() verwende, dann funzt es wunderbar.
Es scheint mir fast so als ob die $_GET-Vars nicht als integer übertragen
werden, auch wenn sie ganzzahlige Werte haben.
Oder liege ich da komplett schief gewickelt.
Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 31-03-2005, 13:25
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich wage zu behaupten, dass du dich irrst.
Mit Zitat antworten
  #3 (permalink)  
Alt 31-03-2005, 13:34
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann werde ich den Code wenn ich zu Hause bin nochmals Zeile für Zeile
auseinandernehmen und versuchen den is_integer() wieder reinzubringen.
Wobei ich allerdings anfügen muss, dass ich bei meiner Bedingung nur von is_integer() zu is_numeric() gewechselt habe und es dann funzte.

Danke

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #4 (permalink)  
Alt 31-03-2005, 14:39
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schau mal mit var_dump($_GET);

Auch eine schöne Funktion ist btw. intval
Mit Zitat antworten
  #5 (permalink)  
Alt 31-03-2005, 14:47
loci
 Junior Member
Links : Onlinestatus : loci ist offline
Registriert seit: Feb 2003
Ort: Saarland
Beiträge: 82
loci ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zur info: alle get und post vars werden als string oder array of strings uebergeben.
testen koennte man den typ mit

PHP-Code:
<?php
if ((string)(int)$_GET['id'] == $_GET['id']) {}
?>
also zuerst den integerwert der variablen bestimmen und zum pruefen wieder in einen string wandeln. wenn dieser test true gibt ist es definitiv eine integer.
Mit Zitat antworten
  #6 (permalink)  
Alt 31-03-2005, 14:48
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Warum nochmal zurückkonvertieren in string?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #7 (permalink)  
Alt 31-03-2005, 15:31
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von loci
PHP-Code:
if ((string)(int)$_GET['id'] == $_GET['id']) 
also zuerst den integerwert der variablen bestimmen und zum pruefen wieder in einen string wandeln. wenn dieser test true gibt ist es definitiv eine integer.
nö, ist es nicht.

um auch auf den typ zu vergleichen, müsstest du schon den operator === nehmen.

ansonsten führt PHP nämlich wieder selbständig einen type cast durch, und vergleicht nur die werte ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 31-03-2005, 20:29
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@penizillin
Habs mit einem Code Schnippel getestet und ein Integer wird nicht erkannt
PHP-Code:
if(!empty($_GET['index']) && is_integer($_GET['index']))
{
    die(
"Die Funktion hat einen Integer erkannt");
}
elseif(
is_numeric($_GET['index']))
{
    die(
"Funzt nur mit Numeric");
}
else
{
    die(
"Funzt gar ned");

Funzt nur mit Numeric.

@shurakai
PHP-Code:
var_dump($_GET); 
Ergibt --> array(1) { ["index"]=> string(1) "5"

Ich hätte wirklich gedacht, dass eine Zahl als Int übertragen wird. Aber eben...
Danke für die Hilfe
Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #9 (permalink)  
Alt 03-04-2005, 23:21
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Für alle die bei einem String feststellen wollen ob er einen Integer Wert darstellt:
PHP-Code:
function is_strInt($data){
    if(
is_numeric($data) && !strpos($data'.') && !strpos($data'e') && !strpos($data'E')){
        return 
true;
    }
    else{
        return 
false;
    }

Gruss

tobi
Mit Zitat antworten
  #10 (permalink)  
Alt 03-04-2005, 23:32
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

was ist mit folgenden werten?
Code:
+5
-5
0xFF
 3 //(!) leerzeichen vor der zahl
1111111111111111111 //lange zahlen
was spricht eigentlich gegen is_int() mit intval()?

Geändert von penizillin (03-04-2005 um 23:40 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 03-04-2005, 23:52
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@penizillin:
Das mit den Hex-Zahlen habe ich gar nicht bedacht. Werde ich noch
nachbessern. Auch werde ich noch alle Leerzeichen aus dem Query String entfernen. Danke..
Negative Zahlen ändert das Script eh in 1 um und bei +5 muss ich mal noch
schauen, da dies eigentlich einen gültigen Wert darstellt. Wird aber durch
das Script z.Z. auch noch auf 1 umgebogen.
Zitat:
was spricht eigentlich gegen is_int() mit intval()?
Ich habe mir auch inval() mal angeschaut, aber für meine Zwecke scheint
diese Funktion nicht geeignet zu sein.
Wenn ich inval auf einen String anwende, der einen double enthält, dann
kriege ich einfach den Ganzzahlanteil zurück. Danach kann ich aber nicht
mehr feststellen ob der String wirklich ein Int war oder eben nur ein durch
die Funktion umgemodelter double.
Und die Eingabe von Kommazahlen möchte ich unterbinden.

Danke Gruss und gute Nacht

tobi
Mit Zitat antworten
  #12 (permalink)  
Alt 04-04-2005, 00:00
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Danach kann ich aber nicht mehr feststellen ob der String wirklich ein Int war oder eben nur ein durch die Funktion umgemodelter double.
wozu muss man das wissen? um eine fehlermeldung auszugeben?
Mit Zitat antworten
  #13 (permalink)  
Alt 04-04-2005, 00:19
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
wozu muss man das wissen? um eine fehlermeldung auszugeben?
Das ganze ist Teil meines Gallery Scripts und dieses arbeitet mit einer GET-Var. Mittels der übermittelten Zahl weiss das Script dann bei welchem Bild die Vorschau beginnen soll resp welches Bild angezeigt werden muss.
Und ein double würde sehr stark für eine versuchte Manipulation sprechen und diese wird mit einem Eintrag in .htaccess "bestraft"

Gruss

tobi
Mit Zitat antworten
  #14 (permalink)  
Alt 04-04-2005, 00:24
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ach so - wenn's solchen maßnahmen dient...
ich kenne die möglichkeit, jemanden bei geringsten unstimmigkeiten in den übermittelten daten auf die startseite zu schicken. der/die hat nix davon, du dagegen, eine impression der startseite
Mit Zitat antworten
  #15 (permalink)  
Alt 05-04-2005, 08:41
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@penizillin

Danke vielmals für deine Anregungen. Ich habe meine Fkt nun ein wenig ergänzt
PHP-Code:
function is_strInt($data){
    if(
is_numeric($data) && !strpos($data,".") && !strpos($data"e") && !strpos($data"E")
 && !
strpos($data,"x") && !strpos($data"X"))
    {
        return 
true;
    }
    else
    {
        return 
false;
    }

Die Whitespaces und allfällige Pluszeichen entferne ich dann damit
PHP-Code:
$iii preg_replace('/\s*/'''$_GET['pics']);
$iii ereg_replace('\+'''$iii); 
Nochmals danke und schönen Tag
Gruss

tobi
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

04.09.2020 palle_1977 | Kategorie: PHP
numaeks Web-Farbmixer

Die RGB-Farben lassen sich hier auf unterschiedliche Weise mischen. Zur Einstellung werden auch die Dreh- und Schieberegler mit Canvas verwendet. Gespeichert werden die Farben in einem Cookie.

04.09.2020 numaek | Kategorie: JAVASCRIPT/ Tools
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:31 Uhr.