Hozzászólások
Lehet kérdezni:D
- A hozzászóláshoz be kell jelentkezni
Jason: kicsit rendbetettem a kódot, és átírtam a példád alapján. Sokat segített! :)
A banánok számát már jól kezeli, de a pénzt mindig 100ra állítja, és nem tudom miért. :(
http://pastebin.com/405621
- A hozzászóláshoz be kell jelentkezni
Próbálkoztam session alkalmazásával, de sehogy sem akar működni. Kipróbáltam a php.net oldalon található példaprogramokat, mind session-re, mind cookie-ra, de egyik sem működik. A helyzet az, hogy maga az oldal lefut, hibaüzenet nélkül, ám nem jegyzi meg azt, amit meg kellene a következő betöltésnél (a böngészőt nem zárom be).
Azt szeretném elérni, hogy ne az URL-ben kelljen POST-tal továbbküldeni az adatokat, illetve később felhasználó-azonosítás miatt is jól jönne.
Jól jönne a segítség, mert megveszek, hogy komoly php dolgokat írhassak, de e nélkül nem megy. :(
Remélem Ti tudtok valami okosat mondani! :D
- A hozzászóláshoz be kell jelentkezni
a php config fileban engedelyezted a sessionokat es a cookiekat?
amugy ha esetleg vmi kodolasi hiba van, vagy akarsz jo tutorialokat esetleg forumokat akkor itt nezz korul:
http://weblabor.hu/kereses?s=munkamenet
- A hozzászóláshoz be kell jelentkezni
A php.ini fájlban állítsd be a következőket:
[code:1:90abc0a36c]
session.use_cookies = 1
session.cookie_lifetime = 0
session.use_trans_sid = 0
[/code:1:90abc0a36c]
Ezután webszerver restart.
Valamint minden fájl elején meg kell majd hívnod a session_start(); függvényt. Ha állítottad a session nevét, akkor még ez előtt kell a session_name("session_uj_neve"); függvény is.
- A hozzászóláshoz be kell jelentkezni
[quote:1a7eb97b69="Emulgeator"]a php config fileban engedelyezted a sessionokat es a cookiekat?
amugy ha esetleg vmi kodolasi hiba van, vagy akarsz jo tutorialokat esetleg forumokat akkor itt nezz korul:
http://weblabor.hu/kereses?s=munkamenet
Engedélyezve van a session és a cookie is. Ezt a számlálós példát próbáltam ki, de nem működik. Vagy ez így önmagában nem megy? Az a baj, hogy nem találtam még egyetlen egységes leírást sem. Minden problémának millió megoldása van php alatt, de ezek nincsenek összeszedve, ezért képtelen vagyok megérteni a session működésének elvét.
Körülnéztem az oldalon, amit adtál, de csak olyan infókat találtam, amiket azok tudnak hasznosítani, akik már vágják ezt a témát. :(
- A hozzászóláshoz be kell jelentkezni
[quote:64d2698a07="tentacle"]A php.ini fájlban állítsd be a következőket:
[code:1:64d2698a07]
session.use_cookies = 1
session.cookie_lifetime = 0
session.use_trans_sid = 0
[/code:1:64d2698a07]
Ezután webszerver restart.
Valamint minden fájl elején meg kell majd hívnod a session_start(); függvényt. Ha állítottad a session nevét, akkor még ez előtt kell a session_name("session_uj_neve"); függvény is.
Így vannak beállítva. :)
- A hozzászóláshoz be kell jelentkezni
Hmm ezt is megnezted:
http://weblabor.hu/cikkek/munkamenetkezeles1
?
Hja es ha tuti jo a config akkor vagd be a kodot amit irtal, megnezem mit rontottal el, mivel ha jo a rendszer es a konfig akkor csakis a kod lehet a hibas.
Ide kirakhatod a kodot:
http://pastebin.com/
- A hozzászóláshoz be kell jelentkezni
[quote:2504da8ea5="Emulgeator"]Hmm ezt is megnezted:
http://weblabor.hu/cikkek/munkamenetkezeles1
?
Hja es ha tuti jo a config akkor vagd be a kodot amit irtal, megnezem mit rontottal el, mivel ha jo a rendszer es a konfig akkor csakis a kod lehet a hibas.
Ide kirakhatod a kodot:
http://pastebin.com/
Ezt a cikket is megnéztem. :)
Itt a kód:
[code:1:2504da8ea5]<?php
session_start();
if (!session_is_registered('count')) {
session_register('count');
$count = 1;
} else {
$count++;
}
?>
<p>
Hello visitor, you have seen this page <?php echo $count; ?> times.
</p>
<p>
To continue, <a href="session.php<?php echo strip_tags(SID); ?>">click
here</a>.
</p>
[/code:1:2504da8ea5]
Ez a php.net oldaláról van, ezzel akartam tesztelni, hogy megy-e a session.
- A hozzászóláshoz be kell jelentkezni
Miért veszed ki külön változóba session-ből az értékeket?
Sztem annyi elég, h
[code:1:2005c756ce]
if (!isset($_SESSION['money'])) {
$_SESSION['money'] = 100;
}
[/code:1:2005c756ce]
Próbáld ki, hogy mindenhol a $_SESSION-nel dolgozol.
[/code]
- A hozzászóláshoz be kell jelentkezni
[quote:7e5b2c8275="Jason"]Miért veszed ki külön változóba session-ből az értékeket?
Sztem annyi elég, h
[code:1:7e5b2c8275]
if (!isset($_SESSION['money'])) {
$_SESSION['money'] = 100;
}
[/code:1:7e5b2c8275]
Próbáld ki, hogy mindenhol a $_SESSION-nel dolgozol.
[/code]
Először lustaságból: nem akartam annyi $_SESSION-t használni. :) Illetve azt hittem, hogy elegánsabb, ha végig ideiglenes változókat használok. Megpróbálom a változók nélkül. :)
Átírtam, de a pénz még mindig nem változik. :( Marad 100-on, akármennyit vásárolok abból a rohadt banánból. :D
- A hozzászóláshoz be kell jelentkezni
hmm, probalj egy egyszeru peldat, hogy mondjuk kezzel egy par session valtozot letrehozol, es azt atkuldod egy masik oldalra.
[code:1:e6a0477812]
<?php
session_start();
$_SESSION['EXAMPLE'] = 'PELDA';
echo "<a href=\"masik.php\">klikk ide</a>";
?>
[/code:1:e6a0477812]
masik.php:
[code:1:e6a0477812]
<?php
session_start();
echo $_SESSION['EXAMPLE'];
?>
[/code:1:e6a0477812]
Ha nem irja ki hogy pelda akkor nem adja at.
Amugy a szamlalos igy lenne jol (idezet a php.hu rol):
[code:1:e6a0477812]
<?php
session_start();
if (isset($HTTP_SESSION_VARS['szamlalo'])) {
$HTTP_SESSION_VARS['szamlalo']++;
}
else {
$HTTP_SESSION_VARS['szamlalo'] = 0;
}
?> [/code:1:e6a0477812]
- A hozzászóláshoz be kell jelentkezni
Köszi! Ezer hála! Működik mindkettő! :)
Mi a különbség a sima $_SESSION és a $HTTP... között?
- A hozzászóláshoz be kell jelentkezni
Hja es meg vmi, sry de meg kell kerdeznem a bongeszodben engedelyezve vannak a cookiek?
- A hozzászóláshoz be kell jelentkezni
[quote:a10bbe42e3="Emulgeator"]Hja es meg vmi, sry de meg kell kerdeznem a bongeszodben engedelyezve vannak a cookiek?
Igen. :)
- A hozzászóláshoz be kell jelentkezni
A régi $HTTP -és megoldás volt a korai php-kban.
AZ úh $_SESSION -os megoldás az újban. Innentől kezdve a $_SESSION úgy viselkedik mint egy rendes tömb, a session_register és társai erősen felejtősek.
Nagy előnye még a $_ tömböknek, hogy superglobálisak, tehát bármelyik függvény, bármelyik objektum bármelyik sorából hivatkozhatsz rájuk.
A $HTTP tömbök használata nem javasolt. a következő verzióban (php5) már alapértelmezettként létre sem jönnek.
- A hozzászóláshoz be kell jelentkezni
[quote:9baafc12ec="TLoF"]A régi $HTTP -és megoldás volt a korai php-kban.
AZ úh $_SESSION -os megoldás az újban. Innentől kezdve a $_SESSION úgy viselkedik mint egy rendes tömb, a session_register és társai erősen felejtősek.
Nagy előnye még a $_ tömböknek, hogy superglobálisak, tehát bármelyik függvény, bármelyik objektum bármelyik sorából hivatkozhatsz rájuk.
A $HTTP tömbök használata nem javasolt. a következő verzióban (php5) már alapértelmezettként létre sem jönnek.
Vagyis az összes változót tárolhatom $_SESSION tömbökben, és azok elérhetőek lesznek az egész "program" részére?
- A hozzászóláshoz be kell jelentkezni
[quote:b3b747a0d4="ScOut3R"]
Vagyis az összes változót tárolhatom $_SESSION tömbökben, és azok elérhetőek lesznek az egész "program" részére?
Igen, és sessionban is lesznek.
- A hozzászóláshoz be kell jelentkezni
[quote:9990fcd86a="Jason"][quote:9990fcd86a="ScOut3R"]
Vagyis az összes változót tárolhatom $_SESSION tömbökben, és azok elérhetőek lesznek az egész "program" részére?
Igen, és sessionban is lesznek.
És ezek "program" függőek? Mondjuk, ha egy másik php-s program is használ egy ugyanolyan nevű session tömböt, akkor nem lesz összeakadás?
- A hozzászóláshoz be kell jelentkezni
A $_SESSION nevű array jeleníti meg a php-ben a session kezelést.
Tehát ha beírsz valamit ebbe a tömbbe majd ugyanebben a sessionben átmész egy másik oldalra, ott is megtalálod a tömbben az értéket.
pl.
login.php:
$_SESSION['oID'] = $row['oID'];
majd index.php-be átmész (link, egyéb):
echo $_SESSION['oID'];
kiírja az értéket.
amíg ugyanabban a sessionban vagy.
- A hozzászóláshoz be kell jelentkezni
[quote:5d8699f6f6="ScOut3R"]
És ezek "program" függőek? Mondjuk, ha egy másik php-s program is használ egy ugyanolyan nevű session tömböt, akkor nem lesz összeakadás?
Ez az egesz session dolog csak elsore ilyen bonyolult. Igazabol pofon egyszeru az egesz. Amit session -nek hivunk az nem mas mint egy fajl.
z a fajl a szerveren tarolodik (be lehet allitani melyik kvt -ban legyen .alapbol /tmp. Ebbol persze windowson rogton baj van mert ott nincs ilyen kvt.) Ebbe a fajlba tarolodnak a session adatok. Az most mindegy hogy hogy. Ami fontos, hogy ennek a fajlnak a nevet mindig tudnia kell a programodnak. Ezt a fajlnevet hivjuk session azonositonak. Veletlenszeru 32 db hexa karaterbol all a fajl neve, hogy ne lehessen kitalalni ( ez biztonsagi kerdes). Ha a programod nem tudja a fajl nevet, akkor nem tudja kiolvasni belole az ertekeket.
A folymat:
keres a bongeszotol >> program lefut letrejon a session >> a kimenetben elkuldi a session azonositott a bongeszonek >> kapcsolat megszakad |||
ujabb keres >> a bongeszo elkuldi a session azonositot >> a program megtalalja a fajlt >> innen ugyan az mint elobb.
Kritikus dolog, hogy kozlekedik a session azonosito a szerver es a bongeszo kozott.
Bongeszotol a szerver fele harom lehetseges modja van:
1) Cookie -ban
2) AZ url -ben
3) <input type="hidden"> urlapmezoben. (ez a formoknal van)
Szervetol a bongeszo fele :
1) Cookie -ban
2) A html forrasaban
Azt hogy eppen, melyik modon tortenik a szerver kulonbozo sessionnel kapcsolatos beallitasai, illetve a felhasznalo bongeszojenek beallitasai egyuttesen hatarozzak meg.
Nagyjabol ennyi. Kicsit olvasgass meg utana.
Ja es a kerdesedre a valasz:
Az a program fog beleirni a session -be amelyik megkapja az azonositojat. De! Csak szep sorban egymas utan. Ameddig az egyik program (php szkript) hasznalja addig a masik nem fer hozza. Csak miutan ez elozo befelyezte vele a munkat. Addig szepen varakozik, es idonkent probal hozzaferni, hogy felszabadult e mar.
Erre gyakorlati pelda a frame -es oldalak.
- A hozzászóláshoz be kell jelentkezni
Köszönöm mindenkinek a segítséget! Nélkületek már rég feladtam volna a php-s "tanulmányaimat". :)
Már van egy kezdetleges php progim, azt átírom session-re, meglátom mi lesz.
- A hozzászóláshoz be kell jelentkezni
Próbálkoztam, de kevés sikerrel. :( A program lefut, de nem jegyzi meg a változókat.
Feltettem ide http://pastebin.com/404495 a kódot. Nagyon hálás lennék, ha valaki kijavítaná. :) :oops: Előre is köszönöm!
- A hozzászóláshoz be kell jelentkezni
Egy egyszerűbb kód, hogy érthető legyen.
Ebből növeszd ki a tiédet.
[code:1:a5be4d6bd9]
<html>
<?php
session_start();
if (isset($_GET['logout'])) {
echo 'Viszlát, ' . $_SESSION['username'] . '<br \>';
$_SESSION['username'] = '';
session_destroy();
session_start();
}
if (isset($_SESSION['username'])) {
echo 'Helló, ' . $_SESSION['username'] . '<br \>';
echo '<form method="get" action=""><input type="submit" name="logout" value="Kilép"></form>';
} else if (isset($_GET['username']) && isset($_GET['passwd']) && $_GET['passwd'] == 'almakorte') {
$_SESSION['username'] = $_GET['username'];
echo 'Helló, ' . $_SESSION['username'] . '<br \>';
echo '<form method="get" action=""><input type="submit" name="logout" value="Kilép"></form>';
} else {
?>
<form method="get" action="">
<input type="text" name="username">
<input type="password" name="passwd">
<input type="submit" value="Mehet">
</form>
<?php
}
?>
<a href="?r=sas">Oldal újratöltése</a>
</html>
[/code:1:a5be4d6bd9]
Remélem érthető.
Magyarázat ugyanitt igényelhető:)
- A hozzászóláshoz be kell jelentkezni
kipróbálható itt:
http://koshinae.szgtikol.kando.hu/~jozso/php/index.php
- A hozzászóláshoz be kell jelentkezni
Ha okosan hasznalod akkor nem. Asszem csak ugy megy tovabb a session hogy egy oldalrol iranyitasz masikra, ha egy teljesen uj oldalt hozna be a user, anelkul hogy atiranyitottad volna header kuldessel vagy linkkel, akkor masik sessiont kezd ha van azon az oldalon is session_start().
Remelem ertheto voltam, kicsit magyartalan lett a megfogalmazas, koran van meg :D
- A hozzászóláshoz be kell jelentkezni
[quote:fd44589d6a="ScOut3R"]Próbálkoztam, de kevés sikerrel. :( A program lefut, de nem jegyzi meg a változókat.
Feltettem ide http://pastebin.com/404495 a kódot. Nagyon hálás lennék, ha valaki kijavítaná. :) :oops: Előre is köszönöm!
Hmm, ez a kod bazi keszekusza. Ha ajanlhatok vmit, ne kezddj bele egybol bonyolult dologba. Kicsit olvasgass probalgasd az alapokat, hogy megszokd a webfejlesztes lenyeget es mikentjet.A PHPt Teljesen mashogy kell felfogni mint egy interpreter nyelvet.
Vannak nagyon jo konyvek, pls van egy konyv ami az apache php mysql telep[itesevel hasznalataval es alapveto webes programozasi problemakkal foglalkozik, ajanlom figyelmedbe: http://www.kiskapu.hu/index.php?BODY=BookInfo&OP=details&ID=1377&VISIT=1
Tenyleg jo konyv kezdoknek, haz ezt elolvasod megertesz sok mindent es akar mar fejleszthetsz is szinte barmit(folyamatos tanulassal melette).
- A hozzászóláshoz be kell jelentkezni
[quote:dca1f32395="ScOut3R"]Próbálkoztam, de kevés sikerrel. :( A program lefut, de nem jegyzi meg a változókat.
Feltettem ide http://pastebin.com/404495 a kódot. Nagyon hálás lennék, ha valaki kijavítaná. :) :oops: Előre is köszönöm!
szal, nem szeded ki a $_POST-ból az adatokat :)
valahogy így kéne csinálni:
proba.php
[code:1:dca1f32395]
<?php
session_start();
if (isset($_POST['reset'])) { unset($_SESSION['money'],$_SESSION['banandb']); }
if (isset($_SESSION['money'])) { $money=$_SESSION['money']; } else { $money=100; }
if (isset($_SESSION['banandb'])) { $banandb=$_SESSION['banandb']; } else { $banandb=0; }
if (isset($_POST['vettbanan'])) {
if (!empty($_POST['vettbanan'])) {
$moneylenne=$money-($_POST['vettbanan']*$_POST['bananar']);
if ($moneylenne<0) {
$info="Nincs ennyi pénzed! <a href=\"proba.php?".SID."\">Vissza</a>";
} else {
$banandb+=$_POST['vettbanan'];
$money=$moneylenne;
}
}
}
if (isset($_POST['eladottbanan'])) {
if (!empty($_POST['eladottbanan'])) {
$bananlenne=$banandb-$_POST['eladottbanan'];
if ($bananlenne<0) {
$info="Nincs ennyi banánod! <a href=\"proba.php?".SID."\">Vissza</a>";
} else {
$money+=$_POST['eladottbanan']*$_POST['bananar'];
$banandb=$bananlenne;
}
}
}
$_SESSION['banandb']=$banandb;
$_SESSION['money']=$money;
?>
<html>
<title>Piac vazze</title>
<body>
<?php
function vasarolhato($money,$gyumolcs)
{
return floor(($money/$gyumolcs));
}
if (isset($info)) { echo $info; } else {
echo "A banán mai ára: ";
$bananprice=rand(5,15);
echo $bananprice." Ft<br>";
echo "<table><form action=\"proba.php\" method='POST'>
<tr><td>Pénzed: <td>$money Ft <td>Vétel <td>Vásárolható <td>Eladás
<tr><td>Ennyi banánod van: <td> $banandb <td><input type='int' size='4' maxlength='4' name='vettbanan'><td>".vasarolhato($money,$bananprice)."<td><input type='int' size='4' maxlength='4' name='eladottbanan'>
<input type=\"hidden\" name=\"bananar\" value=\"".$bananprice."\">
<tr><td><input type='submit' value='Tranzakció'></td>
<tr><td><input type='submit' name=\"reset\" value='Reset'></td></tr>
</form></table>";
}
?>
</body>
</html>[/code:1:dca1f32395]
- A hozzászóláshoz be kell jelentkezni
nem szabad elfelejteni, hogy amit beállítasz a session-ba, az csak a következő oldallekéréskor lesz elérhető.
- A hozzászóláshoz be kell jelentkezni
[quote:4f379fe658="edaile"]nem szabad elfelejteni, hogy amit beállítasz a session-ba, az csak a következő oldallekéréskor lesz elérhető.
Kár, hogy nem igaz.
http://koshinae.szgtikol.kando.hu/~jozso/php/index.phps
3-dik if szerkezet.
- A hozzászóláshoz be kell jelentkezni
A kód rám jellemző, szétszórt! :D Először simán URL-ben küldtem tovább POST-tal a változókat, akkor hibátlanul ment, de ez nem egy elegáns és biztonságos megoldás. A problémát a session kezelése okozza. :)
Hála Nektek már kezd eltűnni a köd. Azt tudtam, hogy nem továbbítom a változókat, illetve nem kérdezem le őket rendesen, és ezért nem fut session-nel hibátlanul a progi. Most, hogy írtatok pár példát, megpróbálom rendbe tenni a kódot. Remélem sikerül! :)
- A hozzászóláshoz be kell jelentkezni
Sziasztok,
Segítsetek pls, mert elakadtam.
Egyszerűen nem tudom írni-olvasni a $_SESSION-t, mindig azt a hibat kapom, hogy nem tudja beállítani a session-t, mert már leküldte a header-t. És nem értem, hogy miért.
cat php.ini | grep session:
session.save_handler = files
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4
Félek, valami nagyon alapot rontok el, mert már mindent átolvastam, amit csak találtam, ráadásul több más, már elkészült alkalmazásomban működnek a session-ök, ugyanezen a szerveren (is).
A végén már idáig egyszerűsítettem, de még mindig nem megy:
A t.php tartalma:
<?php
session_start();
$_SESSION['valtozo']='ertek';
echo '<a href="t2.php">klikk ide</a>';
?>
A t2.php:
session_start();
echo($_SESSION['valtozo']);
Már a t.php meghívásakor kapom a szokásos hibaüzenetet:
"Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/hda/webroot/t.php:1) in /mnt/hda/webroot/t.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/hda/webroot/t.php:1) in /mnt/hda/webroot/t.php on line 2"
itt kiirja ugyan a linket (klikk ide), de a t2.php-ban már csak a két warning jelenik meg. (ugyanez a kettő t2.php-re).
Cookie-k böngészőben engedélyezve. :)
Esetleg valami ötletet tudnátok adni, merre folytassam a hibakeresést, nagyon hálás lennék!
Előre is köszönöm!
üdvözlettel:
optimista
- A hozzászóláshoz be kell jelentkezni
utf8?
- A hozzászóláshoz be kell jelentkezni
Köszönöm szépen!
Ez volt a probléma. Mindig tanulok valamit.
Most már tudom, olyan szövegszerkesztőt kell használnom, amiben be lehet állítani, hogy BOM nélkül mentse az UTF-8 fájlokat.
Az ob_start() most nem használt, de megnéztem, és megjegyeztem, később jól jöhet.
Köszönöm mindkettőtöknek a segítséget!
Üdv,
Optimista
- A hozzászóláshoz be kell jelentkezni
ob_start() az elejere
- A hozzászóláshoz be kell jelentkezni
Nagyon sok fájlban ki kellene cserélnem, a session_register("valami"); függvényt $_SESSION['valami'];-re, egy mágikus parancs kellene. Persze a "valami" tetszőleges karaktersorozat.
Az itteni leírás alapján próbáltam sed-el, de nem jött össze:
http://forums.netbeans.org/topic14199.html&highlight=
Valaki segítsen!
Köszönöm.
- A hozzászóláshoz be kell jelentkezni
Nem a legszebb, de
function my_session_register($key, $value)
{
$_SESSION[$key] = $value;
}
És csak a session_register stringet kell my_session_register -re cserélni. Persze, ugyanígy a többi használt függvényre is lehet egy wrappert írni.
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
Nagyon nem próbáltam le, úgyhogy nem biztos, hogy jó:
#!/usr/bin/perl
use strict;
use warnings;
my $OUTFNAME = $ARGV[0].".new";
open INFILE, "<", $ARGV[0] or die $!;
open OUTFILE, ">", $OUTFNAME or die $!;
while (<INFILE>) {
$_ =~ s/session_register\( (\s*[\'\"]) (\w*) ([\'\"]\s*) \)\;/\$_SESSION\[$1$2$3\]\;/gx;
print OUTFILE $_;
}
close INFILE;
close OUTFILE;
Tedd egy akármilyen állományba, pl. replace_sess.pl, majd
chmod u+x replace_sess.pl
for f in `ls *.php`
do
./replace_sess.pl $f
done
VAGY
find /innen/indulj/phpk/ -type f -name "*.php" -exec ./replace_sess.pl {} \;
A régi állományaid megmaradnak, azok, amiben már a kicserélt szöveg van, *.php.new formátumúak lesznek.
Persze biztosan van ennél szebb, jobb, elegánsabb megoldás, de ez is használható.
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
perl -pi -e "s/foo/bar/g" *.akarmi
t
- A hozzászóláshoz be kell jelentkezni
Köszi, ez a megoldás tetszene, de futtatáskor ezt írja folyamatosan:
Use of uninitialized value $_ in print at ./replace_sess.pl line 13.
Use of uninitialized value $_ in substitution (s///) at ./replace_sess.pl line 12.
Use of uninitialized value $_ in print at ./replace_sess.pl line 13.
Use of uninitialized value $_ in substitution (s///) at ./replace_sess.pl line 12.
Use of uninitialized value $_ in print at ./replace_sess.pl line 13.
Use of uninitialized value $_ in substitution (s///) at ./replace_sess.pl line 12.
- A hozzászóláshoz be kell jelentkezni
a while()-ban ott van az <INFILE> ? Mert a drupal motor lenyeli a kacsacsőröket, aztán utána javítottam. Lepróbáltam két teszt állományon, itt nem írt hibát. :P
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
find /innen/indulj/ -type f -name "*.php" -exec perl -pi -e "s/session_register\( (\s*[\'\"]) (\w*) ([\'\"]\s*) \)\;/\\$\_SESSION\[\$1\$2\$3\]\;/gx" {} \;
tibyke ajánlásával. :)
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
Köszönöm mindenkinek, működik!!!
Naggyon dúrva :)
- A hozzászóláshoz be kell jelentkezni
Ha a session_start() bennvan az index.php elején, minden form submit megáll az egész oldalon. Tehát form action="valami.php" method="post" esetén egyszerűen nem hívja meg a valami.php-t, hogy lekezelje az adatokat, hanem újratölti az aktuális oldalt amin a form van. Ha nem indítom el a session-t, minden form működik, vígan továbbküldi az adatokat a valami.php-nak, csak hát ugye akkor a login rendszer áll meg.
A fájlok amúgy ansi kódolásúak, úgyhogy a bom-os utf-8 hiba nem játszik.
php.ini-t megnéztem, és a beállításai megegyeznek a neten sok helyen írtakkal.
Előre is köszönöm a segítséget!
- A hozzászóláshoz be kell jelentkezni
es mi van a valami.php-ban? - ugy gondolom, hogy az dob vissza az index.php-ra valami session hiba miatt..
sbalazs.
- A hozzászóláshoz be kell jelentkezni
Ez a legfurább az egészben. Teljesen mind1 mi van benne. Ha tök üres a valami.php, ugyanúgy visszadob, mintha a komplett ellenőrző script lenne benne. Mintha meg se hívná...
Viszont sikerült még egy érdekességet felfedeznem. Az index.php-m elején egy isset-tel ellenőriztem, hogy a session létezik-e, és utána raktam if-be, hogy megnézze a felhasználó be van-e jelentkezve. Viszont ha kiveszem az isset-es ellenőzést, elindulnak a form-ok, méghozzá egészen fura módon. Submit esetén megszakad a session (törlődik a session-t tartalmazó fájl tartalma, mintha destroy parancs lett volna kiadva, de nem lett). Tehát gyakorlatilag kijelentkezteti a felhasználót. De miután ez megtörtént, már vígan megy minden form. Csak akkor áll meg az egész ha a session-ben van valami.
Gyakorlatilag ha a session-nek van tartalma, akkor bármilyen form submit kitörli a sessiont (függetlenül attól mi lenne a dolga, mire hivatkozik, még akkor is ha target mező nincs is megadva), majd visszatölti a form lapját, és ha mégegyszer submit-olom szépen elvégzi azt amit kellene neki.
- A hozzászóláshoz be kell jelentkezni
pastebin.com-ra fel tudod tenni a ket fajl forrasat?
> "Ha tök üres a valami.php, ugyanúgy visszadob, mintha a komplett ellenőrző script lenne benne"
ez erdekes. lehet, hogy a form 'action' attributuma dinamikus es hiba eseten ures marad? esetleg hasznalsz valami rewrite modult a webszerveren?
sbalazs.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a segítséget, el se hiszem, hogy milyen hibát hagytam benne...
A login form bejelentkezett formában átalakult user panellé, és nem tudom miért, de lehagytam a form zárótagjét. Ennek következtében az utána jövő formok már persze összecsinálták magukat. És ezen ültem már másfél napot. Bár hogy egy form hiba miért okozza a session teljes törlését még mindig nem értem, de már nem is érdekel. :D
- A hozzászóláshoz be kell jelentkezni
nosza, nezzuk csak:
- ha kikapcsolod a rewrite-okat (RewriteEngine Off) es ezutan is az index.php oldal jelenik meg, akkor a valami.php-ban kellene keresgelni. ugyanis a bongeszo dolga, hogy az action-ben definialt oldalnak posztolja az adatokat - abban nem tudsz hibat veteni. :)
- az index.php elejen meg var_dump()-pal kiiratnam a $_SERVER valtozot, hatha latsz valami rendellenest.
- esetleg firefox-hoz telepitsd a firebug plugint, amiben lathatod, hogy milyen kerest kuldott a bongeszo a szerver fele es az mit adott vissza. ha valami oknal fogva visszairanyit az index.php-ra, azt is latni fogod.
- jo tanacs: tobb helyre is tegyel egy echo('Itt meg jo... #1'); sorokat, hogy kovetni tudd, mi is tortenik.
- esetleg, ha van lehetoseged, akkor az xdebug php extension-t is telepitheted, ami tud trace kimenetet generalni fajlba. ebben szepen sorjaban benne vannak a vegrehajtott php utasitasok.
meg nezegetem kicsit a pastebin-es fajlodat, de nekem jonak tunik...
szerk: ezekszerint, akkor megoldodott... :)
sbalazs.
- A hozzászóláshoz be kell jelentkezni