ugrás a tartalomhoz

Kezdő vagyok, kérlek segítsetek

komcsi4 · 2015. Szep. 10. (Cs), 10.17
Az lenne a kérdésem, hogy van egy oldal, amit csináltam... és van egy login rendszer, amely most működőképes. Egyetlen felhasználója van, amely az admin nevet viseli, MYSQL adatbázisban ENUM típusú rekordnál pedig az admin szintet kapta. Ezzel be tud lépni egy olyan felületre, ahol hozzá tud adni további felhasználókat. Nos az lenne a lényeg, hogy itt hogyan tudnám meghatározni PHP-ben, hogy mondjuk az itt hozzáadott felhasználók típusa mondjuk editor legyen?
Nagyon köszönöm a válaszokat!
 
1

Szia! Gondolom, a SQL

tisch.david · 2015. Szep. 10. (Cs), 11.56
Szia!

Gondolom, a SQL scriptet Te írod, ami a felhasználót létrehozza. Ha igen, akkor írd meg úgy a scriptet, hogy a felhasználó osztályozása alapján állítsa be így vagy úgy a jogosultsági szintet.

Üdv:

Dávid
2

Szia Dávid!

komcsi4 · 2015. Szep. 10. (Cs), 13.48
Én is Dávid vagyok :)

A lényeg az, hogy én megírom php-ben a kódot, ami ugye elküldi az adatbázisba az adatokat, mellyel beregisztrál az illető. Na most én azt hogy tudnám megtenni, hogy itt adom meg, hogy a regisztrált embereknek a típusa (ami ugye adatbázisban ENUM-al meg van adva) csak és kizárólag editor vagy épp diak vagy akármi legyen?

Köszönöm előre is!
3

Szia Dávid! Hogyan küldöd el

tisch.david · 2015. Szep. 10. (Cs), 14.38
Szia Dávid!

Hogyan küldöd el az adatbázisba az adatokat? Én pl. úgy szoktam ezt csinálni, hogy írok egy SQL query-t a PHP kódban, ami beszúrja a megfelelő rekordot. Ha így van, ezt a query-t kell jól megírni. Ha nem, akkor segíts, légyszi, mondjuk egy kódrészlet beidézésével, hogy hogyan csinálod. Így, vakon kicsit nehéz. ;)

Üdv:

Dávid
4

A lényeg

komcsi4 · 2015. Szep. 10. (Cs), 14.40
Van egy űrlapom:
pl.:
Tanár neve:<br>
<input type="text" name="nev"><br><br>
Tanár jelszava:<br>
<input type="password" name="pass"><br><br>
Tanított tárgy/tárgyak:<br><br>
<table>
<tr>
<td id="szoveg">
<label id="check" for="magyar">Magyar</label>
</td>
<td id="box">
<input id="magyar" type="checkbox" name="azonosító" value="magyar" />
</td>
<td id="szoveg">
<label id="check" for="angol">Angol</label>
</td>


Ezt egy másik php fájlal egy gombra kattintva dolgozza fel:

<?php
header('Content-Type: text/html; charset=utf8');
if(isset($_POST["submit"])) {
$nev = $_POST["nev"];
$pass = $_POST["pass"];
$error_data = false;
}
if(!$nev) {
echo "Nincs megadva a tanár neve!";
$error_data = true;
} elseif(strlen($nev)<=3) {
echo "A tanár neve túl rövid!<br>";
$error_data = true;
if()
if($pass) {
if(strlen($pass)<=5) {
echo "A megadott jelszó túl rövid!";
$error_data = true;
}
} else {
echo "Nincs megadva jelszó!";
$error_data = true;
}

if($error_data==false) {
echo "Sikeresen regisztrálta a tanárt!";
$kapcsolat = mysql_connect("127.0.0.1", "root", "");
if (!$kapcsolat) {die("Nem sikerült kapcsolódni az adatbázishoz! " . mysql_error());}
mysql_select_db("dbtest", $kapcsolat) or die("Nem sikerült kiválasztani az adatbázist!");
$sql="INSERT INTO users (username , password )
VALUES ('$_POST[nev]','$_POST[pass]')";
if (!mysql_query($sql,$kapcsolat))
{die('Adatbázis hiba: ' . mysql_error());
}
mysql_close($kapcsolat);
}
?>


ebben a kódban pedig még nincs benn a checkbox, mert nem tudom, miképp vihetem azt fel a mysql adatbázisba
5

Na akkor ha jól sikerült

WebMouse · 2015. Szep. 11. (P), 00.29
Na akkor ha jól sikerült kislilabizálnom, hogy mit is szeretnél:
Van egy adatbázisod amiben van egy users tábla.
Ebben a táblában van egy darab admin, akinek joga van létrehozni további felhasználókat.
Tehát ezt az űrlapot amit bemásoltál, csak az admin láthatja.

#1 Ha csak egy admin lesz, a többi felhasználó meg azonos jogokat kap, akkor egyszerű a megoldás, mikor PHP-vel feldolgozod az űrlapot, egyszerűen mindenkinek automatikusan beírod a jogosúltságát. Be sem kell kérned az űrlapon, mert mindenkinek ugyanaz lesz.

#2 Ha többféle jogosúltságot szeretnél, akkor meg az űrlapba beillesztesz egy select-et, azokkal a lehetőségekkel amik lesznek (pl. admin, moderator, user stb.), és ennek az értékét mented az adatbázisba.
6

#1, de hogyan adjam meg ott a

komcsi4 · 2015. Szep. 11. (P), 02.00
#1, de hogyan adjam meg ott a jogosultságot?
7

Ezen a fórumon mindenki a

tisch.david · 2015. Szep. 11. (P), 08.30
Ezen a fórumon mindenki a saját szabadidejéből áldoz arra, hogy a kérdéseidre válaszoljon. Ez alapvetően arra jó, hogy ha belefutsz egy olyan problémába, amire nem találtál megoldást se a könyveidben, se a weben, akkor kisegítsen a kollektív bölcsesség.

A kérdéseidből úgy gondolom, hogy Neked most nem ilyen jellegű tudásra van szükséged, hanem könyvekből, webről összeszedhetőre. Úgyhogy kérlek, először azokkal kezdj, és ha abban nem találtál valamit, csak az után kérdezz! Akkor viszont szívesen válaszolunk. Így most én kezdem már egy kicsit kihasználva érezni magam.

Köszi! Üdv:

Dávid
8

gyanítom, hogy az a

szabo.b.gabor · 2015. Szep. 11. (P), 10.20
gyanítom, hogy az a problémád, hogy az enum típusú meződ éppen most csak 'admin' értéket fogad el.. az enum az ilyen, csak azt fogadja el, ami be van neki állítva, hogy fogadja el. neked most szerintem phpmyadmin kell (be kell lépned a mysql szerver admin felületére), amin beállítod, hogy a mező milyen értékeket tudjon fogadni.
9

Ez egyszerű, ha ez a probléma amire gondolok

erik0415 · 2015. Szep. 11. (P), 17.57
Na ez nem nehéz, ha úgy van ahogy gondolom:D
Ugye neked van mysql adatbázisba egy táblád ami "users" néven működik. Amibe ezzel az sql kóddal rakod bele a felhasználókat: "INSERT INTO users (username, password) VALUES ('$_POST[nev]','$_POST[pass]')". Na most ha van egy 3. sor is amiben a rangot/jogot tárolod, mint pl.: admin. Először is gondolom az enum típusú oszlopnak beállítottad már a mysql adatbázisba azokat az értékeket amiket szeretnél, pl. hogy legyen "admin" "diak" "tanar" vagy amit akarsz. Utána már csak a sql kódot kell átírni. Mert akkor így kell kinézni-e: "INSERT INTO users (username, password, rang*) VALUES ('".$_POST["nev"]."','".$_POST["pass"]."','rang')".
rang* = nem tudom mi annak az oszlopnak a neve, ezért írd át arra ami a neve, a csillag nem kell oda, a másik rangnál meg az adott rangot amit szeretnél, ha azt akarod, hogy a bevitelkor lehessen beállítani, akkor ezt ugyan úgy kell mint a username és a password esetében. :)
Ha nem ez a megoldás, akkor írd le részletesebben mit, hogy csinálsz.
10

Hopp és máris kész az SQL

bamegakapa · 2015. Szep. 11. (P), 23.06
Hopp és máris kész az SQL injection. Óvatosan írj példakódokat :).
11

Miért?:D

erik0415 · 2015. Szep. 12. (Szo), 10.25
Miért?:D Miért baj, hogy leírtam? Vagy ez így már túl sok segítség vagy mi?:D
12

Adtál neki egy kódot, amit ha

bamegakapa · 2015. Szep. 12. (Szo), 10.29
Adtál neki egy kódot, amit ha felhasznál, sebezhetővé válik az oldala (SQL injectionnek fele sem tréfa), anélkül, hogy tudna erről. Remélem te sem így használod élesben.
13

Őszintén, most nem tudom ez

erik0415 · 2015. Szep. 12. (Szo), 10.31
Őszintén, most nem tudom ez alatt mit értesz, hogy sebezhető lett az oldal tőle. Ezt nem tudnád kicsit részletesebben kifejteni, akár privátba akár itt?
14

Leírtam a kulcsszót, Google

bamegakapa · 2015. Szep. 12. (Szo), 10.44
Leírtam a kulcsszót, Google segít. SQL injection, magyarul SQL befecskendezés. Lényege, hogy a kívülről érkező adatokat (esetedben POST) direktben beilleszted egy SQL lekérdezésbe, megfelelő escape-elés nélkül. Ezzel az esetleges támadónak tálcán kínálod a lehetőséget, hogy az SQL lekérdezésedbe belepofátlankodjon a megfelelő adatok elküldésével. Az meg elég nagy gáz.
15

Igen közbe utána néztem. De

erik0415 · 2015. Szep. 12. (Szo), 10.49
Igen közbe utána néztem. De erre azért nem figyeltem, mert nem ez volt a kérdés. Az volt a kérdés, hogy hogy tudja bele importálni a mysql adatbázisba a rangot. Eddig is sebezhető volt, mivel a username és a password nem volt védve. Amit én írtam bele, az csak egy kódba szerkeszthető érték. Tehát a sebezhető részt nem én írtam bele. Erre neki kell figyelni, hogy milyen módon jut el az sql kódig az adat. Bár ha ennyire nem ért még az adatbázis kezeléshez, akkor nem nagyon értem, miért akar ilyen projektet össze hozni :)
16

Ezért szóltam, hogy kezdő

bamegakapa · 2015. Szep. 12. (Szo), 11.07
Ezért szóltam, hogy kezdő kezébe sose adj olyan kódot, amit ha lemásol, megszívja.

Ha tudod, hogy a kódja sebezhető, akkor mindig hívd fel rá a figyelmét.
17

Igazából erről az sql

erik0415 · 2015. Szep. 12. (Szo), 11.15
Igazából erről az sql injection-ről nem is tudtam, ami érdekes, mert már jó rég óta foglalkozok, a php-val és az adatbázis kezeléssel. Most, hogy említetted, és megnéztem, a weboldalam tele van ezzel a hibával. Amit már javítok. Köszönöm, hogy írtad ezt a sql injection-t, mert szomorú lett volna, ha előbb egy hacker találja meg a weboldalamon. :)
18

Remélem az a "jó régóta" csak

pythonozok · 2015. Szep. 12. (Szo), 11.29
Remélem az a "jó régóta" csak néhány hét és ebből nincs jövedelmed!
Hobbistától még elnézhető a dolog...
19

Már pár éve foglalkozok vele,

erik0415 · 2015. Szep. 12. (Szo), 11.44
Már pár éve foglalkozok vele, ezért csodálkoztam:D De semmi jövedelem szerzésre nem használtam még, csak magamnak csináltam rendszereket. De nem iskolába tanultam, csak így a neten, és furcsállom, hogy még nem találkoztam ezzel, de most már ezt is ismerem, és tudom hárítani ezt a problémát :)