Seite 1 von 1

is mein string ein int ?

Verfasst: Do 14.Jul, 2005 16:07
von dagobert
ich sitz grad an meinem ersten grösseren mod und hab nun ne stelle wo ich nicht weiterkomm.
ich muss einen in ein textfeld eingegebenen string auf seinen typ prüfen. und zwar soll das ein int sein.


nun hab ich natürlich schon im netz gesucht und folgendes erfolglos ausprobiert:

is_int($var)

das funktioniert nicht. wahrscheinlich muss ich dafür erst die variable casten (denn der eingegebene text oder die zahl ist ja formell noch ein string).....aber was is wenn ich die caste und es is aber gar kein int ? (in java würden mir fehlermeldungen um die ohren gehaun ;) )

dann hab ich noch dies hier gefunden

intval($var) > 0

womit ein cast gemacht werden soll und dann geprüft werden soll obs grösser 0 ist. mein problem is aber, dass laut meiner quelle eine 0 zurückgegeben wird, wenns ein string ist und ansonsten die zahl........eine 0 soll aber als zahleingabe ins textfeld ebenfalls möglich sein.

wie lös ich das dilemma nun ?

Verfasst: Do 14.Jul, 2005 16:37
von oxpus
Wenn "0" möglich sein soll, dann stellt sich die Frage, ob ein leeres Feld nicht ebenfalls den Wert 0 darstellen soll. Dann wäre intval($var) die einzigst richtige Lösung.
Auch in Anbetracht der Sicherheit sollte man Zahlen immer mit intval() übernehmen! Für einen "leeren" Wert kann man ja vorher abfragen, ob die Eingabe leer ist. Dann ist immer noch eine Zuweisung eines "default-Wertes" möglich, wenn der schon nicht "0" ist.

Verfasst: Do 14.Jul, 2005 17:00
von dagobert
ich brauch das an einer stelle, wo ich einen punktestand editiere.

wenn der user nun "123" punkte hat und ich möchte einen hinzufügen und schreib versehentlich "124r", dann hätt ich gern ne fehlermeldung, denn sonst würde mit intval ja ne 0 in die db eingetragen und ich weiss evtl nich mehr welcher wert dort vorher stand. kanns also nicht mehr rekonstruieren. und user können ganz gemein sein, wenns um deren punkte geht ;) :D


das mit dem default wert und der null ist aber schon richtig. die sind synonym.

ich hab mir zwischenzeitig die methode hier überlegt......halte sie aber nicht für die feine art:

Code: Alles auswählen

if ($var == '0' || $var == '' || intval($var) > 0) {
     $var = intval($var);
     // alles roger! $var wird verarbeitet
}
else {
   // fehlermeldung
}


mei....für so ne einfache aufgabe muss man in php ne menge denken ;)

Verfasst: Do 14.Jul, 2005 17:45
von oxpus
Nein, bei 124r kommt mit intval 124 raus ;)

Verfasst: Do 14.Jul, 2005 18:18
von dagobert
hm.....du hast recht.....ich habs grad ausprobiert.

aber bei r124 kommt 0 raus ;)


is das ein mist....nu lass ich das ganz weg. wer in dem mod eine validierung der werte will, soll se sich selber basteln. in den allgemeinen boardeinstellungen fehlt die validierung ja auch.....drum sollts passen ;)

Verfasst: Do 14.Jul, 2005 20:30
von oxpus
Öh, Du riskirst dann aber eine Sicherheitslücke!

Verfasst: Do 14.Jul, 2005 21:05
von dagobert
dann gib mal bei deinen allgemeinen board einstellungen "tz" als mindestalter für forenuser ein......is das im plain vanilla auch schon drin oder war das ne funktion des orion welches ich einsetze ?


ich hab es so gelöst, dass nun strings durch intval zur 0 werden. damit hab ichs schon mal besser gelöst als die offiziellen mit dem mindestalter......
mein wunsch, das abfangen von fehleingaben, hab ich dann aber nicht realisiert.

Verfasst: Do 14.Jul, 2005 21:07
von oxpus
Mindestalter? Vanilla phpBB?
Wo? ¦8

Verfasst: Do 14.Jul, 2005 21:10
von dagobert
in den allgemeinen board einstellungen.....aber dann war das wohl ne orion funktion die cback eingebaut hat.

ich hatte leider noch nie ein vanilla ;)

was ist mit:

flod interval
avatargröße KB
avatargröße pixel

sind das vanilla einstellungen ? die gehn nämlich auch wunderbar mit strings.....

edit: das is bestimmt ne vanilla funktion:
server port.....

Verfasst: Do 14.Jul, 2005 21:18
von oxpus
Kann sein. So genau hab ich mir das ACP nicht angeschaut.

Verfasst: Mi 20.Jul, 2005 15:35
von dagobert
noch ne kurze frage:

find ich irgendwo ne übersicht, welche befehle alle möglich sind bei der verarbeitung von db daten ?

ich meine diese hier:

$db->sql_numrows($result)
$db->sql_fetchrow($result)

ich hab schon inner knowledgebase und google geguckt aber leider nichts gefunden.

Verfasst: Mi 20.Jul, 2005 18:55
von oxpus
Schau Dir die Funktionsnamen in der mysql4.php an.
Dann hast Du alle aufgeführt...

Verfasst: Mi 20.Jul, 2005 19:44
von dagobert
wunderbar......genau das hab ich gesucht. thanks !