Kiírtam egy szavazást a honlapon, ami működött is, egészen addig, míg valaki nem szavazott.
Amint szavazott, bekerült a voksa, de onnantól kezdve már nem lehetett többet szavazni, csak az eredmények voltak láthatóak, nem csak neki, hanem mindenki másnak.
De nem tudom hogyan működik a poll modul. Lehetséges hogy nem sütivel dolgozik, hanem IP cím alapján? És kerestem, találtam és az IP cím alapú működésre gondolva javítottam is egy gixert: a Statistics modulban javítottam is a $_SERVER['HTTP_HOST'] kódot $_SERVER['HTTP_X_FORWARDED_HOST']-ra.
De ez sem használt neki.
Van valami ötletetek?
Melyik modulhoz, modulokhoz kapcsolódik a téma?:
Drupal verzió:
Fórum:
csak kikapcsolt gyorstárral
A szavazás modul nem működik együtt a gyorstárazással. Az első névtelen látogató, aki szavaz, megkapja a szavazás állását – ezt a rendszer betárazza, tehát a következő névtelen látogatók a szavazóűrlap helyett a szavazás állását fogják látni mindaddig, amíg nem ürül a gyorstár… és akkor újrakezdődik a kör.
Modulokban nem érdemes kódot módosítani, minden frissítéskor újra el kell végezni a módosításokat (és még ez a legkisebb lehetséges probléma).
Tiltva volt a gyorstár
Megnéztem a gyorstár az tiltva volt.
De van ott egy olyasmi is, hogy Oldal tömörítés, azt most tiltottam le.
Bár nem tiszta egészen nekem a dolog, mert az van oda írva, hogy gyorstárazott oldalakat tömöríti. Mert ugye a gyorstárazás ki volt kapcsolva, azaz elméletileg eddig sem volt mit tömöríteni. De lehet csak nem a legügyesebb a beállítója, és semmi másról nincs szó.
A modul frissítőt azt lefuttattam a módosítás után. A módosítás pedig nem volt felesleges, mert közben néztem, tényleg a szerver és nem a látogatók ip címét látja.
De ezek szerint valahol máshol is kellene.
nem erre való a frissítés
A modul frissítő – ha egyáltalán ugyanarról beszélünk (update.php) – arra való, hogy ha új verziót teszel fel a modulból, akkor szükség esetén frissítse az adatbázist. Azt nem fogja érzékelni, hogy te belemásztál egy modul kódjába.
Ha úgy gondolod, hogy a modul hibás, akkor küldj be hibajegyet, hogy bekerüljön a módosítás a hivatalos kódba. Különben előfordulhat, hogy bevezetsz valami hibát a rendszerbe, ráadásul minden alkalommal, amikor frissítesz, újra és újra át kell írnod a kérdéses részt.
Igen, egyre gondoltunk
Közben az IP hiba oka kiderült, az includes/bootstrap.inc -fájlban kellett átírnom és már működik is rendesen.
A $_SERVER['REMOTE_ADDR'] helyett $_SERVER['HTTP_X_FORWARDED_FOR'] -t írtam.
Ezt sem illett volna tennem?
Végül is ha jól tudom a két kód ugyanazt jelenti, csak a másik egy újabb féle kifejezése neki és a régit nem érti minden szerver.
Azt viszont nem tudom megmondani még, hogy a szavazógépre milyen hatással van, mert most éppen nincs fenn, ha esetleg ilyen IP cím probléma volt, akkor lehet már működik, hiszen eddig mindenkinek egy volt az IP címe, most már nem.
Még ma valamikor visszarakom a szavazógépet, aztán megírom, hogy most már így megy-e rendesen.
És apropó, jut eszembe, az Állapot jelentés részen: ( /admin/reports/status) egy idő után mindig reklamál, hogy az időzített feladatok nem futottak le.
Pedig én nem időzítettem semmit.
Itt időnként mindig le kellene futtattatnom?
Vagy beállítani neki valahol, hogy időnként automatikusan futtassa le saját maga?
Vagy csak akkor kell ezzel foglalkoznom, ha én magam, személyesen tényleg időzítettem is valamit?
cache
Szerintem neked itt is és az ezzel párhuzamos, olvasottságmérő topikban is a gyorstárazással van problémád. Kapcsolj ki mindent a teljesítmény oldalon, ürítsd a gyorstárat és úgy próbálkozz. Át lehet írni az eredeti fájlokat, de egyrészt a frissítéskor visszaáll az eredeti verzió, másrészt pedig megtörténhet, hogy elveszíted a fonalat és már nem tudod mit írtál át - akkor majd egy napot kínlódsz, hogy miért nem műkszik. Nekem eddig sem szavazás, sem olvasottságmérés miatt nem kellett átírnom semmit - csak szűkre veszem a cachelést.
Fentebb már írtam
Fentebb már írtam. :) És azért biztonság kedvéért a nem létező gyorstárat is ürítettem.
Meg van a megoldás
Jól sejtettem, IP cím alapján dolgozik a szavazógép. Tehát az átírás segített.
De szó sincs arról, hogy el kellene veszítenem a fonalat, hiszen fentebb sem írtam mást, mindössze egyetlen kifejezést cseréltem ki egy másikra, minden más érintetlen maradt.
Eddig ugye a rossz kód miatt hiába kérdezte le a látogató ip címét, helyette mindig a tárhelyszerver IP címét kapta meg.
Tehát ha valaki szavazott, utána már nyilván nem engedett mást, a dupla szavazást elkerülendő. Mert hiába volt különböző a két látogató, mindegyikhez nem a saját, hanem a szerver egy és ugyanazon IP címét társította.
Most hogy a kódot javítottam a fentiek szerint - több IP címről is kipróbáltam- most már rendesen működik, és egy ugyanazon IP címről továbbra sem enged senkit duplán szavazni.
Az IP cím alapú szavazásnak persze van egy olyan hátulütője, hogy azoknak az embereknek is összességében is csak egy szavazást enged, akik egy IP címen vannak (úgy halottam pl. a kollégiumi hálózatban lévő gépek lehetnek ilyenek). Másik amit halottam, az sütis megoldás a dupla szavazás elkerülésére, annak is vannak hátul ütői: le lehet tiltva a cookie, vagy akár a felhasználó törli ki, hogy csaljon.
Nem tudom létezik e egyáltalán - regisztráció nélküli - nem túl bonyolult és tökéletes megoldás a szavazásra.
Nincs csalas mentes szavazas
Nincs csalas mentes szavazas, ha regisztraciohoz kotod akkor regisztralni fog sok cimmel...
Nah de azert hulyeseget ne terjesszunk:
Ez nem igaz lasd a dokumentaciot:
http://hu.php.net/manual/en/reserved.variables.server.php
Ha neked ott a tarhely szolgaltato cime jelenik meg, akkor ott valami gubanc van.
---
http://drupalaton.hu
Ez lehetett a gubanc
Nem tudom miért van ez így, én úgy halottam, hogy az új a php nyelvben egy régi utasítás valami újszerű megfogalmazása, azaz a két kód: a
$_SERVER['REMOTE_ADDR']
és
$_SERVER['HTTP_X_FORWARDED_FOR']
az lényegileg ugyanaz. De úgy tűnik ez tényleg hülyeség, semmi újszerűről nincs szó.
Mélyebben nem tudok hozzászólni a dologhoz, mert jobban utána se néztem, és még elég szegényes a php tudásom.
Most azonban rákerestem, és a prog.hu-n is szóba hozta valaki a dolgot, ott arra jutottak, hogy akkor nem működik az első kód, ha egy proxy is van a felállásban:
"Lehet, hogy egy proxy van közöttetek, és te is, meg a gép, amin a php is fut ugyan azt az ip-t látja. Te úgy látod, hogy az a szerver, a php úgy látja, hogy onnan jön a kérés."
http://prog.hu/tudastar/86445/PHP+REMOTE_ADDR+miert+adja+a+szerver+IP+ci...
És ha minden igaz, a webhely szolgáltatóm valóban használ proxyt: akkor tehát ez a "gubanc".
Ha pedig ez így van, akkor érhető, hogy az egyik kód cseréje a másikra nálam megoldotta a problémát és azóta a szavazógép hibátlanul működik, és azon a részen ahol eddig kiírta a látogatók IP címéit, eddig ott is a szerver IP címét halmozta halomba, most pedig már ott is a valós IP címek szerepelnek.
csak hogy tudd
Drupalba es a modulokba sminkekbe nem irunk bele, mert kismacskak halnak.
Valamint az ember sem lovi labon magat.
Amire kicserelted az egy X azaz extra valtozo ami vagy van vagy nincs.
---
http://drupalaton.hu
És akkor?
"Élvezzem", hogy nem működik, vagy van valami ötleted, hogy mi mást tegyek?
Mert ha úgy hagyom, akkor nem fog.
Igaz, úgy emlékszem, alatta az
if
taggal folytatta a sort, aztán a "én váltózómmal", de hiába.
Lehet meg kellene írni a problémát a készítőjének, hogy orvosolja, hiszen senki sem tökéletes.
nem kell atirni a bootstrap.inc -et
eleg orult otlet.
igen, a proxy miatt van.
masok is futtatnak am drupalt proxy kornyezetbe, gondolod, hogy nem futottak meg ebbe a problemaba es nincs ra mas megoldas, mint barbarul atirkalni a bootstrap inc?
de van.
mondjuk telepiteskor nem lett volna rossz elolvasni pl a default.settings.php filet mielott lemasolod. (sajnos nincs benne az INSTALL.txt -ben, hogy nem art elolvasni.. bar az install txt is tudod hanyan olvassak el? senki kb.. aztan sirnak, hogy nem megy)
szoval idezem a default.settings.php -t:
szoval, sajat settings.php -ban, kiveszed a kommentet a megfelelo sorok elol... reverse_proxy => TRUE, megmondod a reverse_proxy_addresses tombbe a proxy ipket (szolgaltatodtol elkered)..
es kesz.
itt a tema 2007bol, amiben a kerdessel foglalkoznak.. 2007 november 26 ota megoldott a dolog es nem kell hozza atirni a bootstrap.inc!!
http://drupal.org/node/173408
ugyan ez a beallitasi hianyossag okozza a masik problemadat, a statisztika gyaszt..
-
clear: both;
Köszi szépen.
Ezt feltétlenül megpróbálom.
Így sem megy
Kipróbáltam, és javításaimat is visszaállítottam vele együtt az eredeti állapotra.
De az égvilágon semmire nem jutottam vele.
Elvettem előlük a # jelet:
'reverse_proxy' => TRUE,
'reverse_proxy_addresses' => array('xxx.xxx.xxx.xxx',),
Az a.b.c.d helyére beírtam az IP címet, a Drupal pedig lefagyott tőle.
azzal nem tudok mit kezdeni, hogy "lefagyott"
hibanapló bejegyzés? vagy valami fogási pont kéne, mert ez így kevés.
ha valóban proxy van a hálózatban, így kell azt a drupal tudtára adni. ez biztos. a "szolgáltatóddal" közösen tudjátok megoldani ezt a gondot, ilyesmit "távsegítségben" elég nehéz pontosan megjavítani. (főleg, ha annyi a "hibaüzenet" amit látok, hogy "lefagyott":)
-
clear: both;
A hibaüzenet
PHP Parse error: syntax error, unexpected T_DOUBLE_ARROW
el is olvasod amit javaslok,
vagy csak csinálod ahogy gondolod?
a settings.php -ban van egy csomó dolog kikommentezve.. logikusan, értelem szerűen azokról a dolgokról kell levenned a kommentezést amikre szükséged van. te most csak úgy huss, levetted az elől a két sor elől amit említettem, aztá' jóvan.. de ez így _nyilván_ nem lesz jó. én nem tudhatom, hogy neked mik vannak eddig a settings.php -ban, a conf tömbhöz kell hozzáadni a proxy beállításokat, ennyit tudok mondani.
valahol van egy olyan rész, hogy conf = array( ... és utána jönnek a paraméter beállítások.. te csak a paraméter beállítások elől vetted el a kommentezést és ezért szintaktikai hibára hajtottad a settings.php -t... erre nem tudok mit mondani, _olvasd el végig_ a settings.php és állítsad be _értelem szerűen_ a te környezetedhez. minden szükséges információ le van írva benne.
-
clear: both;
Ezt tettem
"szoval, sajat settings.php -ban, kiveszed a kommentet a megfelelo sorok elol... reverse_proxy => TRUE, megmondod a reverse_proxy_addresses tombbe a proxy ipket (szolgaltatodtol elkered)..
es kesz."
Ezenkívül meg lehet hogy gyagya vagyok, de ilyenek vannak:
# 'site_name' => 'My Drupal site',
# 'theme_default' => 'minnelli',
# 'anonymous' => 'Visitor',
# 'maintenance_theme' => 'minnelli',
# $conf['locale_custom_strings_en'] = array(
# 'forum' => 'Discussion board',
# '@count min' => '@count minutes',
ezeknek mi köze van az IP cím lekérdezéshez?
Az angol oldalon, amit belinkeltél, ott viszont írnak valami olyan rosszaságot is, amit én követtem el.
A setting.php fájlomban meg semmi különös nincs, csak az, amit a Drupal telepítéskor bekért:
$db_url =
$db_prefix =
Akkor most..?, ezt nagyon nem értem
Semmi köze az ip cím
Semmi köze az ip cím lekérdezéséhez.
Te ennyit adtál meg:
'reverse_proxy' => TRUE,
'reverse_proxy_addresses' => array('a.b.c.d', ...),
Ezt php-ül vajon mit jelent? Pont azt, amit kaptál hibaüzenetben.
A settings.php-ben ez egy konfigurációs tömb két eleme. Viszont nálad nincs ilyen tömb, mert ott van a # a # $conf = array( sor előtt. Persze le is kell zárni a tömböt, vagyis a # ); sor előtt sem kell a hash.
Ha nagyon nem megy, töröld ki a /** és */m közötti részeket, és meglátod.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
Már majdnem működik
Szantog te vagy egy kezdő lámer megmentője! :) Köszi!
Ti sem születtek egyből enciklopédiával a fejetekben. Persze nyálazzam át a php 24 óra alatt, de sajna ez nem így működik.
Litánia helyett:
$conf = array(
'reverse_proxy' => TRUE,
'reverse_proxy_addresses' => array('xxx.xxx.xxx.xxx'),
);
Szóval:
- megy statisztika, (legutóbbi megtekintések)
- megy a szavazógép
de továbbra sem megy a olvasottság számláló.
Miert hogy mukodik?
Igen mi sem igy szulettunk, megtanultuk.
Mond el hogy mukodik, ha nem ugy hogy megtanuljuk azt amire szuksegunk van?
---
http://drupalaton.hu
És addig nem csináltál semmit?
Míg tanultál? Csak tanultál?
Olykor sürgősebb egy probléma megoldása, mint az hogy előtte mindent megtanulhass belőle.
Persze aki totál hobbiból készít egy honlapot, hát álljon neki és tanuljon.
De ha valakinek valami miatt sürgős szüksége van rá, akkor a tanulásra nem lesz egyből és rögtön elég ideje.
elobb tanultam, majd gyakoroltam, ezutan vallaltam munkat
Hihetetlen ugye :).
De elobb megtanultam az alapokat, aztan elkezdtem magamnak jatszadozni, es akkor kertem penzt a tudasomert, amikor tudtam, hogy a feladatot el tudom vegezni.
Ez nem azt jelenti, hogy a munkak alatt nem tanul ujat az ember, de az alapokat igen is tudja.
Egy drupal eseteben ez azt jelenti, hogy:
- HTML + CSS
- PHP nyelv ismerete (szintaktika, fontosabb parancsok)
- JS + jQuery (lasd. php)
Ha ezeket nem ismered akkor, allandoan falakba utkozol, es a falak lebontasa sokkal tovabb tart, mint atfutni egy PHP, CSS stb. konyvet.
Ha magadnak csinalod lelked rajta, de penzt kerni mastol olyanert amihez nem ertek, nekem nem lenne pofam hozza.
---
http://drupalaton.hu
Nem hihetetlen
Nem magamnak csinálom, másoknak, a látogatóknak, de honlapommal meg egy fillért nem keresek és semmi ilyen célja nincs neki. Biztos van olyan, aki pénzkereső honlapot készít, de az enyém nem olyan.