Menü

Login

Aktuelle Version

Forum > Bug: Kein Clan wird zu 0 *

DOTLAN Intranet / Portal >> Probleme und Fehler > Bug: Kein Clan wird zu 0
Antwort erstellen
Autor Thema: Bug: Kein Clan wird zu 0
mes
01.03.2006 um 16:51 QuoteProfileSend PM
NEW

Clan: LANbada
Postings: 65

Bug

Wenn man "Kein Clan" auswählt und dann sein eigenes Profil editiert, wird aus "Kein Clan" eine "0" (null).

[Editiert von mes am 01.Mar.2006 um 16:52]
 
mes
05.03.2006 um 21:12 QuoteProfileSend PM
NEW

Clan: LANbada
Postings: 65

nachtrag: das problem tritt wohl auch mit ICQ auf, ich habe hier einige user, die als icq-uin eine 0 im profil haben...
 
mes
11.03.2006 um 10:44 QuoteProfileSend PM
NEW

Clan: LANbada
Postings: 65

Noch ein Nachtrag:

Der Fehler sieht im Quelltext so aus:

<select style="width: 100%;" name="data[myaccount__clan_select]">
<option value="Kein Clan" selected >Kein Clan</option>
<option value="#bionic-clan">#bionic-clan</option>
<option value="#clan-ibc">#clan-ibc</option>
<option value="#coz | clan of zabo">#coz | clan of zabo</option>
<option value="#mtb">#mtb</option>
<option value="#plaGe">#plaGe</option>
<option value="#vom-feinsten">#vom-feinsten</option>

<option value="0" selected >1337</option>
<option value="1">707</option>

[Editiert von mes am 11.Mar.2006 um 10:44]
 
mes
15.03.2006 um 08:39 QuoteProfileSend PM
NEW

Clan: LANbada
Postings: 65

Hat den niemand anders diesen Fehler??

Das mit dem doppeltem selected kann ich eigentlich nicht selber verursachen, oder?

Noch wichtiger: Der Fehler tritt bei 1.2.3 nimmer noch auf!


Ach so: noch was

<option value="1">707</option>

das stimmt net überein!

[Editiert von mes am 15.Mar.2006 um 08:41]
 
Metus
15.03.2006 um 11:16 QuoteProfileSend PM
NEW

Clan: Zocker Group Siegen e.V.
Postings: 244

Also wenn man beim Registrieren "Kein Clan" auswählt, sich einloggt und dann die Benutzerdaten ändert steht da statt "Kein Clan" eine "0"? Das ist bei mir nicht so.
 
Griffon
15.03.2006 um 11:25 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

Das Problem liegt weiter in PHP:

Grund ist das PHP beim Speichern Wert (string)"0" als ArrayIndes Wert daraus eine (int)0 macht. Und (int)0 == "" ergibt TRUE was zur falschen Auswahl des Clans führt.

Ich bin noch dran. Muss mir da irgendwas einfallen lassen.

[Editiert von Griffon am 15.Mar.2006 um 11:30]
 
mes
15.03.2006 um 11:38 QuoteProfileSend PM
NEW

Clan: LANbada
Postings: 65

also der fehler tritt wohl bei allen clans auf, die nur aus ziffern bestehen!!!!

workaround:

1. in der db von hand alle clans editieren, die nur aus ziffern bestehen

2. in der custon.user.php diesen fall verbieten (2x !!)

Code:
					"match"		=> array(
"/^[0-9]+$/" => _("Der Clan darf nicht nur aus Zahlen bestehen."),
),

 
Griffon
15.03.2006 um 13:06 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

Das wäre eine Alternative, das ist richtig. Aber irgendwie muss das auch anderes gehen. Mal am Wochenende in der Nachtschicht nachschauen was ich da vielleicht besser machen kann.

P.S.: Denk dran das du das für register und myaccount änderst.

[Editiert von Griffon am 15.Mar.2006 um 13:07]
 
Nick
16.03.2006 um 20:25 QuoteProfileSend PM
NEW

Clan: Kein Clan
Postings: 43

ganz einfach:

Code:
(int)0 === ""

das ergibt false
 
Griffon
17.03.2006 um 02:46 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

CZI: danke, aber das ist mir schon bewußt. Blöd bin ich nunmal auch nicht.

Aber das === kann unteranderem auch genau das gegenteil produzieren wenn man die Daten durch mehrfache übergabe in PHP selbst und beim auslesen aus der running config, den aktuellen userdaten und der Datenbank hin und her schiebt dann verändert sich nunmal sehr leicht (grade weil es php ist) der Variablentyp. Und dann würde dein === an anderer Stelle wieder genau das gegenteil produzieren, nämlich die nicht korrekte Auswahl einer zuvor getroffenen Datenänderung.

Allein schon der Fall das beim speichern von $arr = array( (string)'0' => 'blafasel'); der variablen typ von key($arr) ein integer ist und nicht wie zuvor abgespeichert ein String sollte einem schon zu denken geben.

[Edited by Griffon at 17.Mar.2006 and 02:47]
 
mes
17.03.2006 um 08:41 QuoteProfileSend PM
NEW

Clan: LANbada
Postings: 65

mes hat folgendes geschrieben:
<option value="0" selected >1337</option>
<option value="1">707</option>


Vielleicht versteh ich das hier falsch, aber so ein int(0) oder sonstwas kann aus dem Clannamen auch keine 1 machen ?! Der Fehler liegt doch dann woanders...
 
Nick
17.03.2006 um 18:46 QuoteProfileSend PM
NEW

Clan: Kein Clan
Postings: 43

ja, ich hatte das auch nicht behauptet, aber aus eigener erfahrung weiß ich, dass man gelegentlich das offensichtliche übersieht.

war ja nur ein vorschlag.

und dass PHP '0' gleich behandelt wie 0 kann ich irgendwo nachvollziehen. die sprache hat nunmal keine strikte typentrennung wie C oder so.

und da hast du recht, das kann natürlich passieren, dass das dann wieder nicht hinhaut.


kann mann dann nicht (string)0 === "" machen? oder sowas in der art.

[Editiert von C.ZI am 17.Mar.2006 um 18:49]
 
Griffon
18.03.2006 um 09:05 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

mes hat folgendes geschrieben:
nachtrag: das problem tritt wohl auch mit ICQ auf, ich habe hier einige user, die als icq-uin eine 0 im profil haben...

Wohl eher nicht. Das mit icq 0 würde ich anders deuten. Früher war das ICQ Feld bei mir eine Integer Zahl. Und da gibt es nunmal nur zahlen und so wurde aus '' eine 0.
 
Griffon
18.03.2006 um 09:07 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

mes hat folgendes geschrieben:
<option value="1">707</option>

Hierzu habe ich eine Erklärung gefunden. PHP beim speichern von '707' als arrayindex eine Zahl draus macht denkt php hier anders. beim anschließenden array_merge in der custom.user.php wird aus der 707 eine 1. das habe ich abe schon verhindern können

 
Griffon
19.03.2006 um 19:22 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

Ist mit Version 1.2.3a behoben. Siehe news
 
[ Antwort erstellen ]