Ha jól értem nem teljesen ugyanaz, mert crockl kódja - bár pont ezt nem fejtette ki és ezért szinte alig érthető - ellenőrzést végez az adatbázisból, és nem teszi ellenőrzés nélkül saját sessionváltozóiba a felhasználótól kapott inputot, mint a te kódrészleted!
Mivel sok ilyen felhasználótól való adatátvétel történik egy PHP-s programban, nagyon fontos, hogy az ember minél hamarabb rászokjon és minél ösztönösebbé tegye, hogy a felhasználótól adatot semmilyen esetben sem vesz át ellenőrzés nélkül, különben esetleg a nem kis munkával összerakott majd üzembeállított rendszerben levő ilyen biztonsági lukak esetleg nagyobb kárt illetve sokkal több pluszmunkát, túlórát, határidőcsúszást okozhatnak, mintha az már elejétől csak biztonsági szempontból is alaposan átgondolt kód kerülne a rendszerbe.
Természetesen úgy értettem, hogy akkor lesz $_SESSION[user] változóm, ha a user kitöltötte az űrlapot és OK gombot nyomott.
Olvasgatom én a manual-t csak időnként nem értem.
olvasgass: php.net/session nezd peldakat.
Egy ropke segtiseg. $_SESSION["akarmi"] akkor jon letre amikor erteket adsz neki. Valtozok ertekadasa gondolom csak nem gond, hiszem a leirt peldad-ba is van egy, a $kapcsolat =mysql_ resznel.
m. Hát vagy én nem értem, hogy mit írtok, vagy eleve nem sikerült elmagyaráznom, hogy mire gondoltam.
Szóval:
1. user kitölti a nev+jelszóval a belépő űrlapot
2. ezekkel kapcsolódom az adatbázishoz, ha nem sikerül, vissza a belépéshez, ha igen, megkapja az 1.sz. űrlapot
3. 1.sz. lap: adatbázist lekérdez, listát kiír, user választ tételt és műveletet, 2. sz. lapra megy automatikusan utána
4. 2.sz. lap: előző választás alapján adatbázist lekérdez, listát kiír, user választ tételt és műveletet, stb.
5. 3. sz. lap: 2. választás alapján adatbázist lekérdez, űrlapot kiír, user kitölt, adatokat adatbázisba bevisz, vissza megy 1-es v. 2-es laphoz
stb., mert több lap is van
Ergo nekem minden egyes lapon kell kapcsolódnom az adatbázishoz a belépő űrlapon megadott adatokkal. Plusz egyik lapról vinnem kell a kiválasztott tételeket és műveleteket a másikra, de ha visszalépek egy előző űrlapra, és újra választok, ennek felül kell írnia, az előző, ezen az oldalon történt választást. (Ez sütinél jelent gondot tapasztalatom szerint.)
És ha jól értem, akkor ha elindítok egy session_start-ot a belépő űrlapon (meg mindegyiken), akkor lesz $_SESSION[user] és $_SESSION[passw] változóm?
És ha rosszul adta meg a user a jelszót pl., vagy mégsem gombbal visszalépett egy előző választáshoz, akkor a második próbálkozásnál, hogyan lőjjem le az előző session megfelelő változóit (mert a manual azt írja, hogy ne használjuk a session-unregistert, a session_unset-tel meg azt is elvesztem, amit nem kellene)?
És ha header()-el küldöm tovább a belépő űrlapról az 1. sz. lapra, akkor ott miért nem látom már a $_SESSION[user]-t? Mert elbénáztam valamit, vagy nem is lehet?
Amit szeretnék:
- egy fájlba betenni az összes gyakran előforduló műveletet függvényekkel( ezt minden, a progihoz tartozó fájl-ba include-olni) pl. ilyen tartalommal
function dbCsatlakozas($fh, $pass)
{
$kapcsolat =mysql_connect ("localhost", $fh, $pass);
if (!$kapcsolat) die ("Nem lehet csatlakozni ...stb.");
mysql_select_db("dbnev", $kapcsolat) or die ("Nem lehet megnyitni ... stb.");
}
dbCsatlakozas($_SESSION[user],$_SESSION[jelszo]);
Az nem baj, úgy értettem, hogy csak ne kelljen foglalkoznom vele minden egyes fájlban, hanem jegyezze meg a user-passw-ot és ezekkel hozza létre a kapcsolatot. Ezt az egészet meg betenni egy függvénybe, amit includ-al behívok minden fájl elején, és kész. Csak nem tudom, hogy erre a megjegyzésre jó lesz-e a session, meg egyébként se akarom feltalálni a spanyolviaszt ezredszerre, ha már más csinált működő scriptet rá.
1.Tesztelek egy session-t, szeretném, ha akkor is működne, ha be van kapcsolava süti, és akkor is, ha nincs. Az én gépemen sütivel működik, anélkül nem. Ha felteszem egy Linux-os szerverre, ott pont fordítva, süti nélkül működik csak.
Mit kell beállítanom és hol?
2. Egy űrlapon megkapom a user-t és a jelszót, próbálok csatlakozni egy adatbázishoz. Ha sikerül, szeretném egymásra épülő űrlapok hosszú során megtartani azt a kapcsolatot.
Tud valaki erre egy példaprogit mutatni?
Ez frankón megtalálja a tageken kívül szereplő alma[0-9] stringeket pl. preg_match_all-t használva (beszámoztam az almákat, hogy ellenőrizzem a találatokat), viszont lecserélni nem tudom őket - ebben az esetben a cserélendő string az egész cucc lenne, nem csak az alma[0-9]. Létezik olyan, hogy assertion, ami úgy képez feltételt, hogy a találatnak nem része a minta ezen része, ez viszont csak fix hosszúságú stringekre használható.
Ha csak match kéne, akkor ki tudom nyerni csak az alma[0-9] stringet a harmadik capturing subpattern-ként, de a replace-nek nem lehet megadni (szerintem), hogy csak az egyik capturing subpattern-t cserélje.
Én nem kiszedni akarom a tageket, hanem kikerülni a csere során (mint azt korábban is írtam). Nos, miután a nap egy jelentős részét a http://hu2.php.net/manual/en/pcre.pattern.syntax.php tanulmányozásával töltöttem, már kezdem kapisgálni, hogy hogy lehet ezt megoldani :) - legalábbis azt hiszem...
Hogy a másik kérdésemre magam válaszoljak, ha string változóba újsor(oka)t akarok betenni, egyszerűen enter(eke)t kell nyomni. Triviális, csak azért butaság, mert így az indentálásnak adtunk egy nagy pofont.
Ez sajnos nem jo, mert az eslo <-tol az utoslo >-ig kiszed mindent, azaz <html -tol /html>-ig :)) A .* helyett .*? -t ajanlanam. Amugy php-ba ott a strip_tags, erre van.
Van egy kérdésem is, hátha itt tud valaki ötletet adni.
Van egy szöveg, benne változó számú <<[\w]+>> alakú minta. Olyan eljárást szeretnék csinálni, ami végigmegy a szövegen, és a fenti maszkra illeszkedő mintákat kigyűjti egy tömbbe. Tehát hasonló eljárást szeretnék csinálni, mint a preg_split, de amíg ott tömbelemekre illeszti a maszkot, én egy szövegre szeretném.
Gyakorlatilag a substr_count fügvényhez hasonló függvényt szeretnék csinálni, két lényeges különbséggel:
1. Nem konkrét szöveget illeszt, hanem maszkot.
2. A visszatérési érték nem az előfordulások száma, hanem a a talált minták egy tömbje.
Mivel nem írtad, hogy milyen MySQL-ről van szó, feltételezem, hogy valamilyen 3.xx, ezért a join-os megoldást mondom:
select
tabla1.*
from
tabla1 LEFT JOIN tabla2
ON tabla1.azon=tabla2.azon
where tabla2.azon is NULL;
ez annyit csinál, hogy hozza a tabla1(vizuálian: bal(left) tábla) összes rekordját, és a joinban megadott feltételnek megfelelő rekordokat a 2. táblából. De a where-ben kiszűrjük a 2. táblából azokat, amelyekben nincs rekord...
/*
ha véletlenül 4-es a MySQL, akkor elvileg már mennie kell a következőnek:
select
t1.*
from
tabla1 t1
where
tabla1.azon not in(select tabla2.azon from tabla2)
*/
Lenne egy olyan mysql problémám, hogy:
van két táblázat
mind2ben van egy lista
az egyikben az eredeti lista
a másikban bedig egy olyan lista, amit a elsőből hoztam létre, tehát nem minden tagja szerepel az elsőnek a másodikban
az elsőből kéne azokat a elemeket kiszednem, amik a másodikban nem szerepelnek..
tudna nekem ebben valaki segíteni? esetleg egy példaprogramot mutatni?