Sziasztok!
Egy rutin tartalomfelvitelt követően megjelent az alábbi hibaüzenet:
user warning: Duplicate entry '' for key 2 query: INSERT INTO users (created) VALUES (1272539303) in /USER/datek/sciencecaffe.com/www/modules/user/user.module on line 327.
Sajnos az erre az esetre ajánlott http://drupal.hu/forum/user-warning-duplicate-entry watchdog tábla törlés se hozott semmi változást.
Mi a gond, hogy orvosolhatom a hibát?
Előre is köszönöm a segítséget!
Melyik modulhoz, modulokhoz kapcsolódik a téma?:
Fórum:
xdebug, vagy a user modul-ban
xdebug, vagy a user modul-ban a hibánál kitolni egy debug_backtrace-t és nézni, hogy mi tolja neki ezt a vacak cuccot.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
uid
Gyanusan magas ez az uid, tenyleg ekkoranak kell lennie?
Ha nem akkor allitsd vissza az auto increment mezo erteket, a valoszinusitheto helyes ertekre vagy annak ketszeresere ;).
Es valoszinuleg letrejott mar egy ilyen user nagyobb id-val azokat az ID-ket helyre kellene rakni mindenhol, nem egyszeru vadaszat...
Csak akkor allj neki, ha tudod mit csinalsz ;) es elotte DB mentes... es ne eles oldalon kiserletezz!!!
---
http://drupalaton.hu
created nem uid
Vszínű hibás user_save-t hív vmi module/hook (vagy módosítja a user/account objektumot) tartalom beküldésekor. Ezért tanácsolta pp, hogy ki kell deríteni, mi hívja meg/mi fut le előtte.
Ui:alapból van egy name='' bejegyzés a users táblában. A name mező UNIQUE KEY, ezér akad ki az emlíett query-nél.
SPAM lehet?
Megnéztem a usereket. Egy hibás nevű és e-mail című fake regisztrációt követően jött elő a hiba. A fake user-t töröltem, a hiba nem múlt el, szóval mélyebbre kell ásni.
Kártékony alkalmazás egyáltalán meg tud fektetni egy álló drupal rendszert?
"Csak akkor allj neki, ha tudod mit csinalsz " - igen mindenképpen szakihoz fordulok, db addig is lementve...
Full HTML engedélyezve van?
Hisz Goba legutóbbi DUG-os előadása óta tudjuk, hogy ha a full HTML engedélyezve van, akkor igen cifra dolgok is történhetnek...
Alapértelmezve "Filtered
Alapértelmezve "Filtered HTML" van megadva. De jogos kérdés, az említett Spam-es dologgal együtt elkezdtem az Insert 6.x-1.0-beta4 modullal dolgozni, hogy könnyen tudjanak a szerkesztők a képet beszúrni.
Most leszedtem - biztos, ami biztos alapon - a modult, de a helyzet sajnos változatlan...
Töröljem a beviteli formátumot?
Esetleg töröljem ezt a beviteli formátumot, hátha?
Hopsz
Közben néztem a lapot, és rájöttem, hogy az az egymilliárdos csoda, az nem a szekvenciából jön, hanem a kurrens időbélyeg. Hmmmmm. Fejem vakarom közben, ha lesz valami szólok, de a többiek hátha jobban tudnak segíteni ennek tükrében.
A beviteli formát akkor töröld, ha tényleg nincs rá szükség. (A hibaüzenetek kijelzését meg kapcsold le szerintem. Ez is biztonsági rés, semmi közük hozzá a látogatóknak, és még hülyén is néz ki)
Szia, kikapcsoltam a hiba
Szia, kikapcsoltam a hiba kijelzést.
Ha van valami, szívesen várom :)
De ha valóban biztonsági rés, akkor a köv. drupal update gondolom megoldja.
Utána nézek hogy kell az ilyet "hivatalosan" jelezni, hogy tegyek is valamit a közösségért.
ÜDV és köszi!
Nem
Nem, alapvetően a teljes HTML beviteli forma nem biztonsági rés, szóval ezt nem fogják javítani, de azzá válhat.
Annak a fake usernek
Annak a fake usernek engedélyezve volt a full html? Ha igen, akkor küldött be tartalmat, kommentet?
Csaka főadminnak van!
Csak nekem a root adminnak van Full html jogosultsága, így a fake user nem csinálhatott semmit.
debug_backtrace()
Ha minden tartalom létrehozásnáll előjön a probléma, akkor azt kell kideríti, hogy mi okozza ezt. Hogy volt 1 fake user regisztrálás, vagy hogy full html-e a bevitel az nem teljesen ide vág szerintem. Tehát egyik módszer:
felteszed a developer module-t, majd módosítod a modules/user/user.module fájl (persze előtte másolatot készítesz) user_save fgv-ét, mégpedig beírod az első sorába:
dpm(debug_backtrace());
Elédobhatsz egy IF-et is (
gobal $user; if ($user->uid == 1) {...}
) ha nem akarod hogy minden szerkesztő is kapjon ilyen jelentést, vagy watchdog-ba is írhatod.Ezután létrehozol egy említett tartalmat és átnézed a jelentést amit kapsz. Vszínű vmi module meghívja a user_save-t. Tehát ilyesmit keress:
Ha van ilyen, akkor fél siker, a tömbön belül lesz egy 'file' és egy 'line' - és el is kaptad mi, hol hívta meg! :)
Másik módszer: egyenként kikapcsolod a feltett moduljaid, hasra ütés/gyanú sorrendben :) és figyeled melyik kikapcsolása után tűnik el a hibajelentés.
Ui:sőt, most látom hogy a devel-ben van ddebug_backtrace(). Én is tanulok :)
Próbálkozom!
Szia, próbálkozom a dologgal, ha jutottam valamire (vagy ha nem), a kollektív okulás miatt mindenképpen leírom.