zanda Posted August 28, 2008 Report Share Posted August 28, 2008 Varbūt kāds var palīdzēt, jo esmu nonākusi strupceļā. Sesijas ID lapā tiek pārsūtīts, pievienojot to URLā. Uz localhosta viss strādā, bet kad uzkopēju failus uz bezmaksas hostingu (www.akvarijs.net76.net ), sesijas ID netiek pārsūtīti. Nospiežot vienreiz uz pogu "Sākums", lapa pāradresējas, bet nospiežot otrā reizē, URLam netiek pievienots SID. Tas pats notiek, kad nospiež uz "Reģistrētiem lietotājiem" un citām pogām. Projekts ir nekomerciāls, tāpēc neesmu gatava maksāt pat hostingu. Varbūt ir kāda iespēja kā .htaccess failā vai kur citur norādīt, lai pārsūta sesijas ID? Netā kaut ko atradu par session.use_trans_sid , bet nesapratu kur tam var norādīt vērtību. Link to comment Share on other sites More sharing options...
cucumber Posted August 28, 2008 Report Share Posted August 28, 2008 cookie settingos, nav atskiriga addrese? piemeram uz locala bija localhost, bet parnesot neesi samainijusi ? Link to comment Share on other sites More sharing options...
zanda Posted August 29, 2008 Author Report Share Posted August 29, 2008 (edited) Nevaru neko aizdomīgu atrast. Ir norādīts: define('HTTP_COOKIE_DOMAIN', 'www.akvarijs.net76.net'); define('HTTP_COOKIE_PATH', '/'); define('STORE_SESSIONS', 'mysql'); Atradu tā hostinga php.ini failu un salīdzināju ar savējo. Neredzēju neko būtiski atšķirīgu. Serverim php.ini ir norādīts session.save_path=/tmp un tāds ir arī defaultais, tikai uz servera man pie tmp nav pieeja atšķirībā no mana localhosta un maksas hostingiem. Tur varu tikt klāt tikai /home/lietotaja_vards/public_html/ , bet tas /tmp, kur jāglabā sesijas, atrodas /home/tmp. Varbūt tur ir problēma? Kaut gan pirms tam biju uzkopējusi uz to pašu serveri Oscommerce, no kurienes ir daļēji paņemta lietotāju reģistrācijas daļa, un tas tur strādāja. Edited August 29, 2008 by zanda Link to comment Share on other sites More sharing options...
Aleksejs Posted August 29, 2008 Report Share Posted August 29, 2008 Vispārīgā gadījumā Tev būtu jābūt vienalga, kādā veidā tiek pārsūtīts sesijas ID. Jo ja Tu veic session_start(), tad PHP pats atkarībā no konkrētā hosta konfigurācijas atrod, kurā vietā tiek reģistrēts sesijas ID (visticamāk pašlaik tas tiek padots caur cookie). Kādēļ Tev ir svarīgi, lai būtu caur URL? Link to comment Share on other sites More sharing options...
4e4en Posted August 29, 2008 Report Share Posted August 29, 2008 (edited) Ja sesijas tiek padotas caur URL'u un formas laukiem, tad ir nedaudz sarežģītāk veikt CSRF/XSRF uzbrukumus. Edited August 29, 2008 by 4e4en Link to comment Share on other sites More sharing options...
zanda Posted August 29, 2008 Author Report Share Posted August 29, 2008 Sesiju pārsūtīšana tajā lapā ir paņemta no Internetveikala Oscommerce koda. Oscommerce ir tieši tāds vairākpakāpju un daudzvalodu dinamiskais menu kāds man bija vajadzīgs, un kuru varēju ar nelielām izmaiņām, izmetot visu, kas saistīts ar precēm un iepirkumu grozu, pielāgot dzimtēm, ģintīm, sugām latīņu un latviešu valodās. Lai nesarežģītu dzīvi, no oscommerce paņēmu arī lietotāju reģistrācijas daļu un tāpēc arī tur ir lielā došība un aizsardzība. Lielākās izmaiņas, ko tur izdarīju, bija Redirect aizvākšana, kurš izmeta kļūdu "Heders alredy send", jo manā lapā lietotājs visu laiku atgriežas un index.php. Redirect vietā mainīgo pārsūtīšanai izmantoju slēpto formu. Bet jautājums ir par to, kas varētu būt par iemeslu, ka uz localhosta viss strādā un URLam sesijas ID pierakstās klāt, bet uz free hosta URLam pierakstās klāt viss, izņemot sesijas ID. Pirmajā reizē pēc sesijas izveidošanas kods šo id redz (to var redzēt, ja uzbrauc uz pogu SAKUMS), bet nākošā reizē vairs neredz, tātad nepārsūta. Link to comment Share on other sites More sharing options...
Aleksejs Posted August 29, 2008 Report Share Posted August 29, 2008 Dokumentācijā stāv rakstīts: PHP is capable of transforming links transparently. Unless you are using PHP 4.2.0 or later, you need to enable it manually when building PHP. Under Unix, pass --enable-trans-sid to configure. If this build option and the run-time option session.use_trans_sid are enabled, relative URIs will be changed to contain the session id automatically. un šeit: session.use_trans_sid boolean session.use_trans_sid whether transparent sid support is enabled or not. Defaults to 0 (disabled). Note: For PHP 4.1.2 or less, it is enabled by compiling with --enable-trans-sid. From PHP 4.2.0, trans-sid feature is always compiled. URL based session management has additional security risks compared to cookie based session management. Users may send a URL that contains an active session ID to their friends by email or users may save a URL that contains a session ID to their bookmarks and access your site with the same session ID always, for example. Link to comment Share on other sites More sharing options...
zanda Posted August 29, 2008 Author Report Share Posted August 29, 2008 To es vakar jau izlasīju un pirmajā postā tāpēc jautāju: Varbūt ir kāda iespēja kā .htaccess failā vai kur citur norādīt, lai pārsūta sesijas ID? Netā kaut ko atradu par session.use_trans_sid , bet nesapratu kur tam var norādīt vērtību. Gan localhosta, gan hosta php.ini failā stāv session.use_trans_sid=0. Abās vietās ir php 5. Vienīgā atšķirība, ka man ir win, bet tur unix. Kādā veidā es varu izmanīt vērtību hosta php.ini failā? Link to comment Share on other sites More sharing options...
Aleksejs Posted August 29, 2008 Report Share Posted August 29, 2008 Un kā ir ar register_globals? Varbūt uz windows tas bija ieslēgts un daļā skripta neizmanto $_GET['id'], bet uzreiz $id? Link to comment Share on other sites More sharing options...
zanda Posted August 29, 2008 Author Report Share Posted August 29, 2008 register_globals = Off abās vietās. Man ir defaultā php.ini konfigurācija. Tikai nedēļu atpakaļ to pārinstalēju un neko neesmu mainījusi. Uzliku lapu uz cita bezmaksas hosta un tur tieši tas pats. Izskatīju vēlreiz cauri visu kodu, un neko aizdomīgu neatradu. Man pat vairāk nav idejas, ko meklēt. :( Link to comment Share on other sites More sharing options...
Aleksejs Posted August 29, 2008 Report Share Posted August 29, 2008 Hmm, nu varbūt pamēģini pameklēt koda failos, vai kaut kur netiek uzstādīta "use_trans_sid" vērtība... Link to comment Share on other sites More sharing options...
zanda Posted September 2, 2008 Author Report Share Posted September 2, 2008 Paldies visiem, kas centās palīdzēt. Problēma atrisinājās. Izrādās, ka Unixam nepatīk šāds pieraksts osCommerce funkcijai href = tep_href_link('index.php', 'n=sakums', 'SSL'). 'akcija=prcess'; bet vajag rakstīt nosūtāmos parametrus tā: href = tep_href_link('index.php', 'n=sakums, akcija=process', 'SSL'); Windows uz to neprotestēja un strādāja. Bez tam izrādījās, ka uz Win pārsūtāmās sesijas ID var redzēt uz ekrāna URL galā, bet uz Unix to nevar redzēt. Tas arī mani samulsināja. Link to comment Share on other sites More sharing options...
marcis Posted September 3, 2008 Report Share Posted September 3, 2008 Tapēc, ka windows, acīmredzot, sesijas id neturēja cepumos. Link to comment Share on other sites More sharing options...
Recommended Posts