Jump to content
GSForum - Segélyvonal

PHP kérdésem van


Recommended Posts

Posted

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!

Posted

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

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. :bizonytalan:

Posted

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 :hááát: ...) , 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... :hááát:)

Master_of_Puppets
Posted

A másik gondom a $action tartalma. Ha nincs beállítva (márpedig honnan lenne :hááát: ...) , 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. :pislog:

 

De ha gondolod nézd meg magad is az összetevőket itt!

Kovács Dávid ( Davs )
Posted

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>

  • 3 weeks later...
Posted

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...)

 

Posted

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?

Posted

@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.

:)

Posted

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

  1. Hozzáférj a MySQL-hez, és elvégezd azokat a mûveleteket, amik az install.sql-ben vannak
  2. Feltöltsd a counter.php-t
  3. Ö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

Ü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. :bizonytalan:

 

Köszi minden segítséget elõre is. :)

Posted

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

Nagyon szépen köszönöm a gyors segítséget! :)

Posted (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 by h.arpad
Posted

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.

8)

 

Hiba jelzés magyarul: Figyelmeztetés: Nem definiált változó str !

Posted

Sajna nem megy (időközben eszembe jutott), a probléma az, hogy csak az utolsó sor értékét adja vissza.

Posted

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? :)

Posted

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. :hááát:

Posted
Ugye nem lecserélted a $str .= sort egy $str = sorra? :)

Nem. 8)

Posted

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.

Posted
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. :hááá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.

Posted

Tedd be csak a PHP részét még egyszer! (Mármint ide.)

Posted
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>
...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...