is mein string ein int ?

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
dagobert
Beiträge: 457
Registriert: Mo 08.Mär, 2004 13:46
Wohnort: Altenkirchen
Kontaktdaten:

is mein string ein int ?

Beitrag 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 ?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag 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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
dagobert
Beiträge: 457
Registriert: Mo 08.Mär, 2004 13:46
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag 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 ;)
Zuletzt geändert von dagobert am Do 14.Jul, 2005 17:08, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Nein, bei 124r kommt mit intval 124 raus ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
dagobert
Beiträge: 457
Registriert: Mo 08.Mär, 2004 13:46
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag 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 ;)
Zuletzt geändert von dagobert am Do 14.Jul, 2005 18:41, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öh, Du riskirst dann aber eine Sicherheitslücke!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
dagobert
Beiträge: 457
Registriert: Mo 08.Mär, 2004 13:46
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von dagobert am Do 14.Jul, 2005 21:07, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Mindestalter? Vanilla phpBB?
Wo? ¦8
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
dagobert
Beiträge: 457
Registriert: Mo 08.Mär, 2004 13:46
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag 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.....
Zuletzt geändert von dagobert am Do 14.Jul, 2005 21:17, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Kann sein. So genau hab ich mir das ACP nicht angeschaut.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
dagobert
Beiträge: 457
Registriert: Mo 08.Mär, 2004 13:46
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag 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.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Schau Dir die Funktionsnamen in der mysql4.php an.
Dann hast Du alle aufgeführt...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
dagobert
Beiträge: 457
Registriert: Mo 08.Mär, 2004 13:46
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag von dagobert »

wunderbar......genau das hab ich gesucht. thanks !
Antworten