Kiskalóz Posted September 13, 2007 Posted September 13, 2007 session_start nem az oldal közepén leledzik. Hanem azzal indul pl: <?php session_start(); .... ?> Mezõfi kartács NEM a megoldást írta be Neked, hanem egy nagyon jó útbaigazítást adott, hogy megtaláld a jó megoldást. De ez csak akkor fog menni ha kicsit is tudsz php-t programozni!
h.arpad Posted September 13, 2007 Posted September 13, 2007 A session_start() lehet akárhol, csak akkor nem szabad kimenetnek lennie előtte. Tehát semmi print, echo, meg hasonló, ami a böngészőnek adatot (és ezzel automatikusan fejlécet) küldene.
Master_of_Puppets Posted September 15, 2007 Posted September 15, 2007 Van ez: <? $user_passwords = array ( "admin" => "admin", "user2" => "password2", "user3" => "password3", "user4" => "password4" ); $logout_page = "logout.php"; $login_page = "login.php"; $invalidlogin_page = "invalidlogin.php"; if (!isset($action)) $action = ""; if (!isset($pwd)) $pwd = ""; if (!isset($loginpwd)) $loginpwd = ""; if (!isset($loginuser)) $loginuser = ""; if (!isset($loginname)) $loginname = ""; if (!isset($password)) $password = ""; if ($action == "logout") { Setcookie("loginpwd","",time() -86400); Setcookie("loginuser","",time() - 86400); include($logout_page); exit; } else if ($action == "login") { if (($loginname == "") || ($password == "")) { include($invalidlogin_page); exit; } else if (strcmp($user_passwords[$loginname],$password) == 0) { Setcookie("loginpwd",$password,time() + 86400); Setcookie("loginuser",$loginname,time() + 86400); } else { include($invalidlogin_page); exit; } } else { if (($loginpwd == "") || ($loginuser == "")) { include($login_page); exit; } else if (strcmp($user_passwords[$loginuser],$loginpwd) == 0) { Setcookie("loginpwd",$loginpwd,time() + 86400); Setcookie("loginuser",$loginuser,time() + 86400); } else { include($invalidlogin_page); exit; } } ?> És az a gondom vele, hogy mindig visszadob a bejelentkezés után. A felül lévõ tömb tartalmazza a felhasználókat és a hozzájuk tartozó jelszavakat. De ha megpróbálok belépni az admin felhasználóval és a hozzá tartozó admin jelszóval akkor visszadob. És elvileg azt is ki kéne írnia, hogy "Invalid login!" de semmit nem csinál csak meghívja önmagát.
h.arpad Posted September 15, 2007 Posted September 15, 2007 Ezt a blokkot nézd: //... else if (strcmp($user_passwords[$loginuser],$loginpwd) == 0) { Setcookie("loginpwd",$loginpwd,time() + 86400); Setcookie("loginuser",$loginuser,time() + 86400); } //... Lefordítva tehát, állítson be két sütit, ha a felhasználó jelszava helyes. Az a gond, hogy ezen a feltétel-blokkon belül nem szerepel, hogy bármilyen oldalt include-olnia kéne. Vagy ugyanez hiányozhat a dokumentum utolsó előtti sorából is. (Vagyis végigvizsgál mindent a programod, de ha a jelszó helyes, semmit sem tesz a sütik beállításán kívül.) Az oldal, amibe be van ágyazva simán "újratölti saját magát" úgy, hogy előtte beállította a sütiket. A másik gondom a $action tartalma. Ha nincs beállítva (márpedig honnan lenne ...) , egy olyan értéket kap ("" - üres sztring), amit a programod a későbbiekben nem kezel: if (!isset($action)) $action = ""; Ilyenkor mit vársz, mi történjen? Másrészt ilyenkor se' hagyd el a kapcsos zárójeleket, de ez már csak szépséghiba: if (_feltétel_) { //utasítások; } A kérdésem az, beállította-e a sütiket jól, miután jó felhasználónév/jelszó párost adtál meg? (Mellesleg nagy a redundancia ebben a kódban... )
Master_of_Puppets Posted September 16, 2007 Posted September 16, 2007 A másik gondom a $action tartalma. Ha nincs beállítva (márpedig honnan lenne ...) , egy olyan értéket kap ("" - üres sztring), amit a programod a későbbiekben nem kezel: if (!isset($action)) $action = ""; Ilyenkor mit vársz, mi történjen? A $action az majd a program futása során lesz logout vagy login, függően attól hogy a felhasználó mit akar. A kérdésem az, beállította-e a sütiket jól, miután jó felhasználónév/jelszó párost adtál meg? Mikor megpróbálok belépni, a log in után olyan mintha nem is állítana be sütit. De ha gondolod nézd meg magad is az összetevőket itt!
Kovács Dávid ( Davs ) Posted September 17, 2007 Posted September 17, 2007 Hy! Ma megpróbáltam a PC World-ös leírás szerint telepíteni az apache-php-mysql triót, de miután elindítom az apache-ot és a Firefox-ba beírom, hogy localhost (vagy 127.0.0.1) akkor egy 403-as hibauzenet fogad(Forbidden You don't have permission to access / on this server.). Miért van ez? Van pedig ott index.php-is a phpinfo() paranccsal. Az error.log-ból pár gyanús sor: [Mon Sep 17 12:31:49 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:31:50 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:32:15 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:32:20 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:38:27 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:39:26 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:39:28 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:41:00 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:41:00 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/favicon.ico [Mon Sep 17 12:41:41 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/index.php [Mon Sep 17 12:41:43 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/index.php [Mon Sep 17 12:42:59 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:42:59 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/favicon.ico [Mon Sep 17 12:42:59 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/favicon.ico [Mon Sep 17 12:42:59 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/phpmyadmin [Mon Sep 17 12:43:01 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ [Mon Sep 17 12:43:02 2007] [error] [client 127.0.0.1] client denied by server configuration: D:/web/localhost/ Hmmm...Már meg is találtam. :-) Ezt a részt kellett kikommentezni(tehát egy # jelet tenni elé): #<Directory /> # Order deny,allow # Deny from all # Options FollowSymLinks # AllowOverride None # Satisfy all #</Directory>
Sqomy Posted October 7, 2007 Posted October 7, 2007 Sziasztok! Egy kis segítségre lenne szükségem. Látogató-számlálóra lenne szükségem, már megvan hogy mit, de az nincs, hogy hogyan, milyen úton kéne azt feltennem, mit hova kell beillesztenem a weblapba. Van ilyenem, hogy index.php, getip.php, counter.php, meg install.sql. Nekem egy olyan oldal is jó lenne, ahol aránylag egyszerûen le van írva. Sajnálom, hogy (még) nem értek hozzá, de nagyon fontos lenne. Elõre is köszi! (Látom, hogy nulla php tudással ne tegyek fel kérdést...)
payskin Posted October 7, 2007 Posted October 7, 2007 Szóval a dolog ott kezdõdik, hogy nem kell beillesztened semmit a weblapba. Nem így mûködik. Egy PHP oldalt kell összehozzál, ami a régi weblapodból és valószínûleg az index.php tartalmából áll össze. Megint csak valószínûleg az index.php-ban levõ rész meghívja a counter.php-ban levõ részt, ami az adatbázis-kezelést végzi, aminek a mûködéséhez elõbb hozzá kéne férjél egy mûködõ MySQL adatbázishoz, és le kéne rajtad futtasd az install.sql-t. Kezdjük az alapoknál! Hol az oldal? A gépeden? PHP és MySQL fel van telepítve? Vagy egy szerveren? PHP és MySQL fel van telepítve, és hozzáférésed is van?
Mezofi Posted October 7, 2007 Posted October 7, 2007 @Sqomy Regisztálsz a http://freeaudit.hu/ -oldalra. Ott kapsz egy kétsoros hmtl+javascript kódot, Azt beilleszted az index.php vagy index.html oldaladra (<body>ide</body>) és kész. Amikor kiváncsi vagy mennyi látogatód volt, akkor felkeresed a freeaudit oldalt és megnézed, napi, stb bontásban.
Sqomy Posted October 8, 2007 Posted October 8, 2007 Szia! Még nincs, de ezeket találtam egy 2006-os cikkben: Apache: http://httpd.apache.org -> apache_2.0.59-win32-x86-no_ssl.msi PHP: http://www.php.net vagy http://hu.php.net/releases/ -> php-5.1.2-Win32.zip MySql: http://downloads.mysql.com/ -> mysql-essential-5.0.22-win32.msi Ezek jók? A cikkben le van írva a telepítésük is. A weboldal az atw-n van, aktiváltam a mysql hozzáférést.
payskin Posted October 8, 2007 Posted October 8, 2007 Ha a weboldal az ATW-n van, nem kell letöltened semmit, mert ezt az ATW megtette helyetted. (Letölteni akkor kell, ha a saját számítógépeden akarod tesztelni a dolgot feltöltés elõtt.) Akkor már csak az van hátra, hogy Hozzáférj a MySQL-hez, és elvégezd azokat a mûveleteket, amik az install.sql-ben vannak Feltöltsd a counter.php-t Összegyúrd az eredeti weblapodat az index.php-val egy új index.php-vá, ami meghívja majd a counter.php-t
Master_of_Puppets Posted October 17, 2007 Posted October 17, 2007 Üdv! Az lenne a kérdésem, hogy hogyan lehet azt megcsinálni, hogy ilyen azonosítókkal is új oldalt lehessen megynitni PHP-vel. Gondolok itt ilyesmire: http://www.valami.hu/news.php?newsid=3 Tehát, ha beírom ezt a keresõsávba, akkor a 3. számú hírt nyissa meg, ne pedig a news.php-t. Nemt tudom, mennyire fogalmaztam érthetõen. Köszi minden segítséget elõre is.
h.arpad Posted October 17, 2007 Posted October 17, 2007 A news.php-ban kell megvizsgálni a $_GET tömb tartalmát. A tartalmától függően egy include() utasítással be lehet tölteni a megfelelő oldalt, ha pedig egyik sem szerepel a lekédező karakterláncban, az alapértelmezettet (kezdooldal.php). Annyi oldal kell, ahány fajta tartalom: <?php switch ($_GET['newsid']) { case 1: include_once("elso.php"); break; case 2: include_once("masodik.php"); break; case 3: include_once("harmadik.php"); break; //... további esetek ... default: include_once("kezdooldal.php"); } ?>
Master_of_Puppets Posted October 17, 2007 Posted October 17, 2007 Nagyon szépen köszönöm a gyors segítséget!
ma_atti Posted October 18, 2007 Posted October 18, 2007 (edited) Sziasztok, A következõ problémám van: (Még kezdõ vagyok, ne szídjatok nagyon!) Egy javascriptnek szeretnek átadni egy PHP-val MySQL-bõl kivett tömböt. A kódrészlet:(menu.php) ... </div> <div class="dtree"> <script type="text/javascript"> <!-- d = new dTree('d'); d.config.target="right"; d.config.folderLinks = false; d.add(0,-1,'<B>Fomenu</B>','','Fomenu leiras'); d.add(1,0,'Bevezeto','','Bevezetes','','','',true); d.add(101,1,'Leiras','Leiras.html','Leirasok'); // Itt kovetkezik a feltoltes mysql tablabol <?php include("Connections/connMM.php"); $link = mysql_connect($hostname_conn, $username_conn, $password_conn); if (!$link) { die(mysql_error()); } mysql_select_db ( $database_conn); $result = mysql_query("SELECT id, menu_name, menupos1, menupos2 FROM menu "); if (!$result) { echo 'Hiba: ' . mysql_error(); exit; } while ($row = mysql_fetch_array($result, MYSQL_NUM)) { $str .= "d.add($row[2],$row[3],'$row[1]','indit.php?id=$row[0]')"; } ?> <? echo $str ?>; document.write(d); //--> </script> ... Értelemszerûen a MySQL táblában lévõ összes sort szeretném behozni a d.add() fügvenybe. Viszont a logókban csak "PHP Notice: Undefined variable: str in" típusú üzenetet kapok. Ha valaki tud segíteni, megköszönném. Udv, P.S. Termeszetes, hogy már egy napja "guglizok", minden eredmény nélkul. ma_atti Légy szíves, HASZNÁLJ ékezekeket! Ez itt egy MAGYAR nyelvû fórum. Edited October 18, 2007 by h.arpad
Mezofi Posted October 18, 2007 Posted October 18, 2007 A $str változóra hivatkozol, de nem kapott értéket sehol a program szerint. A lapot kezd így: <?php $str = ""; És már nem is kapsz NOTICE-t. Hiba jelzés magyarul: Figyelmeztetés: Nem definiált változó str !
ma_atti Posted October 18, 2007 Posted October 18, 2007 Sajna nem megy (időközben eszembe jutott), a probléma az, hogy csak az utolsó sor értékét adja vissza.
payskin Posted October 18, 2007 Posted October 18, 2007 Nemcsak a program szerint! $str .= "d.add($row[2],$row[3],'$row[1]','indit.php?id=$row[0]')"; Ez a sor azt jelenti, hogy fogd az $str változó tartalmát, add hozzá ezt a stringet, és az egészet rakd vissza az $str változóba. Amikor először ér a PHP értelmező erre a sorra, nincs tartalma a $str változónak, amit foghatna, ezért küld egy figyelmeztetést. Sajnos nem megy... Ugye nem lecserélted a $str .= sort egy $str = sorra?
h.arpad Posted October 18, 2007 Posted October 18, 2007 Másrészt lehetőség van kikapcsolni a NOTICE hibajelzést. "Élesben" meg általában illik is, ha viszont próbálgatod a kódot, jó, ha be van kapcsolva. Így lehet állítani: error_reporting (E_ERROR | E_WARNING | E_PARSE); Élesben: php.ini: display_errors = Off (A .log fájlban fogod megtalálni a hibákat.) Egyébként a tömböt sikerült feltölteni, miután a Mezofi által javasoltakat megcsináltad? Magában ez a hiba nem kéne leállítsa ugyanis a kód futását.
ma_atti Posted October 18, 2007 Posted October 18, 2007 Ugye nem lecserélted a $str .= sort egy $str = sorra? Nem.
payskin Posted October 18, 2007 Posted October 18, 2007 Akkor közvetlenül az $str .= sor elé raktad be az $str = sort. Benne van a ciklusban, ezért minden körben gondosan kitörli, amit az elõzõben beleraktál.
ma_atti Posted October 18, 2007 Posted October 18, 2007 Egyébként a tömböt sikerült feltölteni, miután a Mezofi által javasoltakat megcsináltad? Magában ez a hiba nem kéne leállítsa ugyanis a kód futását. Persze, a tömböt feltölti, de csak az utolsó sorral. Nem állítja le a kód futását, csak éppen nem hozza le az összes sort, csak az utolsót. Akkor közvetlenül az $str .= sor elé raktad be az $str = sort. Benne van a ciklusban, ezért minden körben gondosan kitörli, amit az előzőben beleraktál. Nem. Az elején van, nem a while ciklusban.
payskin Posted October 18, 2007 Posted October 18, 2007 Tedd be csak a PHP részét még egyszer! (Mármint ide.)
ma_atti Posted October 18, 2007 Posted October 18, 2007 Tedd be csak a PHP részét még egyszer! (Mármint ide.) A kódrészlet: </div> <div class="dtree"> <script type="text/javascript"> <!-- d = new dTree('d'); d.config.target="right"; d.config.folderLinks = false; d.add(0,-1,'<B>Fomenu</B>','','Fomenu leiras'); d.add(1,0,'Bevezeto','','Bevezetes','','','',true); d.add(101,1,'Leiras','Leiras.html','Leirasok'); // Itt kovetkezik a feltoltes mysql tablabol <?php include("Connections/connMM.php"); $str = ""; $link = mysql_connect($hostname_conn, $username_conn, $password_conn); if (!$link) { die(mysql_error()); } mysql_select_db ( $database_conn); $result = mysql_query("SELECT id, menu_name, menupos1, menupos2 FROM menu "); if (!$result) { echo 'Hiba: ' . mysql_error(); exit; } while ($row = mysql_fetch_array($result, MYSQL_NUM)) { $str .= "d.add($row[2],$row[3],'$row[1]','indit.php?id=$row[0]');"; } ?> <? echo $str ?>; document.write(d); //--> </script> ...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now