Jump to content
php.lv forumi

Sesijas ID pārsūtīšana


zanda

Recommended Posts

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

cookie settingos, nav atskiriga addrese? piemeram uz locala bija localhost, bet parnesot neesi samainijusi ?

Link to comment
Share on other sites

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 by zanda
Link to comment
Share on other sites

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

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

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

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

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

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

×
×
  • Create New...