Kezdőoldal » Számítástechnika » Weblapkészítés » Valaki ki tudná javítani ezt...

Makker bolha kérdése:

Valaki ki tudná javítani ezt a PHP -kódot is?

Figyelt kérdés

Ez az error: Parse error: syntax error, unexpected '}' in /home/freedownloadsoft/public_html/bejelentkezes.php on line 32


<?php


session_start();


$felhasznalonev = $_POST['felhasznalonev'];

$jelszo = $_POST['jelszo'];


if($felhasznalonev&&$jelszo)

{

$kapcsolodas = mysql_connect("sql1.nulll.eu","freedownloadsoft","lollol");

$adatbazis = mysql_select_db('user',$kapcsolodas);


$query = mysql_query("SELECT * FROM info WHERE username='$felhasznalonev'");

$numrows = mysql_num_rows($query);


if ($numrows!=0)

{


while($rows = mysql_fetch_assoc($query))

{

$dbfelhasznalonev = $rows['username'];

$dbjelszo = $rows['password'];

}

if ($felhasznalonev==$dbfelhasznalonev&&$jelszo==$dbjelszo)

{


$_SESSION['felhasznalonev'] = $felhasznalonev;

echo "Bejelentkeztél! A felhasználó oldal <a href='felhasznalo.php'>itt!</a>";

}

else

die("A jelszó nem megfelelő!")

}

else

die("Nem létezik ez a felhasználó");

}

else

die (Kérlek add meg a Felhasználóneved és jeszavad!);

?>



2013. júl. 26. 11:26
1 2
 11/17 anonim ***** válasza:

$felhasznalonev = $_POST['felhasznalonev'];

$jelszo = $_POST['jelszo'];


...


$query = mysql_query("SELECT * FROM info WHERE username='$felhasznalonev'");


felejtsd el gyorsan, hogy escapeles nélkül adsz adatot a mysql-nek. sőt ha itt járunk akkor a mysql_query parancsot is felejtsd el és helyette használj pdo -t, az sql query -kben pedig paraméterként add át a dolgokat.

gugli a barátod, de ez így nem csak h elavult, de baromi nagy biztonsági rés is.

2013. júl. 26. 12:36
Hasznos számodra ez a válasz?
 12/17 A kérdező kommentje:

Akk letudod írni hogan is csináljam ???

Lécike nagyon kéne és nem értek nagyon hozzá :(

2013. júl. 26. 12:41
 13/17 anonim ***** válasza:
2013. júl. 26. 12:44
Hasznos számodra ez a válasz?
 14/17 A kérdező kommentje:
ok koszike
2013. júl. 26. 12:46
 15/17 anonim ***** válasza:
100%

A 11:26-kor közölt forráskóddal több probléma is van:

- Mint már említették, a legutolsó die függvényben hiányzik az idézőjel:

die ("Kérlek add meg a Felhasználóneved és Jelszavad!");


- Az SQL lekérdezésben nincs védelem SQL-injection ellen:

$query = mysql_query("SELECT * FROM info WHERE username='".mysql_real_escape_string($felhasznalonev)."';");


- Jelszót adatbázisban kódolatlanul nem tárolunk - egy SQL-támadás esetén hozzáférhetnek a felhasználók adataihoz. Minimum így:

$dbjelszo = sha1(md5("Tit-kos2345".$rows['password']));

ezt persze regisztrációnál is módosítani kell.


- Biztonsági szempontból javasolt "elhallgatni", hogy a felhasználónév vagy a jelszó közül PONTOSAN MELYIK a hibás. Tehát a hibaüzenetnek inkább "Hibás jelszó vagy felhasználónév!"-nek érdemesebb lennie.


- Nincs védelem a szkript közvetlen elérése ellen, tehát nem figyeli semmi, hogy a szkriptnek küldött adatok egy űrlaptól származnak-e vagy robot küldi őket. Ez lehetőséget ad brute-force támadások könnyebb kivitelezéséhez.


Az űrlapba helyezz el egy rejtett mezőt például így:

<input type="hidden" name="formalitas" value="<?php echo sha1(date("Y-m-d H:i")); ?>" />

majd ellenőrizd ennek meglétét:

if ($_POST["formalitas"] == sha1(date("Y-m-d H:i"))) {

//Ide jön a többi része az ellenőrzési procedúrának

} else {

die ("Hiba az űrlap elküldésekor");

}


De használhatsz Captcha-t is - ezzel ellenőrizheted, hogy valóban ember tölti-e ki az űrlapot.

2013. júl. 26. 13:27
Hasznos számodra ez a válasz?
 16/17 anonim ***** válasza:
100%
Legyen már annyi benned, hogy értelmezed a hibaüzenetet és elolvasol pár könyvet.
2013. júl. 26. 14:04
Hasznos számodra ez a válasz?
 17/17 anonim ***** válasza:

Hát, mert ezek mik?


}

else

{

echo "Ez az e-mail foglalt!";

}

else

{

echo "Foglalt felhasznalonev!";

}

else

{


A PHP-ban a szelekció if - else ágakból áll.


if(FELTÉTEL) { AKKOR } else { KÜLÖNBEN }


Nem lehet csak else ág. Kell egy feltétel is, aminek a nem beteljesülése [FALSE] esetén lefut az else ága.


if(x == y)

{

ha x = y akkor ez fut le

}

else

{

ha x != [nem egyenlő] y akkor ez fut le

}


Mint látod nincs if ágad így else sem lehet csak úgy magába, csak if ág lehet magába.


Másik lehetőséged az if - else if ágak


if(x == 1)

{

lefut ha x = 1

}

else if (x == 2)

{

lefut ha x = 2

}

else if (x == 3)

{

lefut ha x = 3

}

else

{

minden más esetben ez fut le, azaz ha x nem 1, nem 2, és nem 3, hanem bármi más

}


(a fenti példa csak a else if ágak bemutatására írtam, a fenti konkrét esetben érdemesebb lenne switch szerkezetet használni)

2013. júl. 26. 14:25
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!