[HELP] admin panel
Moderatori: Zamolxe, Moderatori
[HELP] admin panel
salutari .. sunt incepator , inteleg codul php un pic, desi nu m-am bagat prea "adanc" in php
am un script care listeaza userii dintr-un tabel (dintr-o baza de date)
nume baza date: amx
nume tabel: admins
Fields: id, auth, password, access, flags, email, data_expirarii, ultima_modificare
cum am mai spus, am un script care imi listeaza totii userii din baza de date intr-un tabel.
Am nevoie de un admin panel(cu login) cu care sa pot edita toate fieldurile pt un anumit user.
Imi puteti da un exemplu de astfel de admin panel ( ca sa incerc eu sa il fac) sau sa imi dati voi direct codul (v-am dat detaliile bazei de date).
P.S.: scuzati-ma ca nu am folosit "Search"
//Edit: am uitat sa va spun , voi mai pune un field in tabel (administrator)
default: 0
daca e 1 inseamna ca este admin si se poate loga in admin panel , daca este 0 nu se poate loga...
am un script care listeaza userii dintr-un tabel (dintr-o baza de date)
nume baza date: amx
nume tabel: admins
Fields: id, auth, password, access, flags, email, data_expirarii, ultima_modificare
cum am mai spus, am un script care imi listeaza totii userii din baza de date intr-un tabel.
Am nevoie de un admin panel(cu login) cu care sa pot edita toate fieldurile pt un anumit user.
Imi puteti da un exemplu de astfel de admin panel ( ca sa incerc eu sa il fac) sau sa imi dati voi direct codul (v-am dat detaliile bazei de date).
P.S.: scuzati-ma ca nu am folosit "Search"
//Edit: am uitat sa va spun , voi mai pune un field in tabel (administrator)
default: 0
daca e 1 inseamna ca este admin si se poate loga in admin panel , daca este 0 nu se poate loga...
oricum codul nu e asa greu....mai intai faci select la baza de date
$select = "SELECT * FROM admins WHERE administrator = 0";
$select2 =mysql_query($select);
while($rand = mysql_fetch_array($select2)){
echo $rand['auth'].'|';
echo $rand['acces'].'|';
echo $rand['flags'].'|';
echo $rand['email'].'|';
echo $rand['data_expirarii'].'|';
echo $rand['ultima_modificare'].'|';
echo $rand['administrator'].'|</br>';
}
aici este pentru selectare....daca ai asta e usor sa faci de modificare,dar ia mai mult timp.....n-am timp astazi,nici maine si poimaine plec...
$select = "SELECT * FROM admins WHERE administrator = 0";
$select2 =mysql_query($select);
while($rand = mysql_fetch_array($select2)){
echo $rand['auth'].'|';
echo $rand['acces'].'|';
echo $rand['flags'].'|';
echo $rand['email'].'|';
echo $rand['data_expirarii'].'|';
echo $rand['ultima_modificare'].'|';
echo $rand['administrator'].'|</br>';
}
aici este pentru selectare....daca ai asta e usor sa faci de modificare,dar ia mai mult timp.....n-am timp astazi,nici maine si poimaine plec...
-
- PHPRomania Supporter
- Mesaje: 12
- Membru din: Lun Aug 22, 2011 4:04 pm
- Localitate: Slobozia
- Contact:
Am decis sa contribui si eu sa te ajut putin si ti am scris codul sursa pt pagina login.
Sper sa nu fii gresit nimic:D:)
[/code]
Sper sa nu fii gresit nimic:D:)
Cod: Selectaţi tot
<?php
error_reporting(E_ALL);
session_start();
$login = new Login();
if (isset($_POST['submit'])) {
$login->messages();
} else
$login->showerrors();
class Login {
private $_submit;
private $_username;
private $_password;
private $_passmd5;
private $_errors;
public function __construct()
{
$this->_submit = (isset($_POST['submit']))? 1 : 0;
if (isset($_POST['submit'])) {
$this->_username = $_POST['username'];
$this->_password = $_POST['password'];
$this->_passmd5 = md5($this->_password);
}
$this->_errors = array();
}
public function allfields()
{
return (isset($_POST['username']) && isset($_POST['password']))? 1 : 0;
}
public function checkuser()
{
$checkuserq = mysql_query("SELECT * FROM admins WHERE auth = '{$this->_username}' ");
if (mysql_num_rows($checkuser) == 1) {
return true;
} else
return false;
}
public function createsession()
{
$_SESSION['username'] = $this->_username;
$_SESSION['password'] = $this->_passmd5;
}
public function messages()
{
try {
if ($this->allfields())
throw new Exception("Please fill in all fields!");
if ($this->checkuser())
throw new Exception("Invalid username!");
if ($this->passmatch())
throw new Exception("Invalid password!");
$this->createsession();
}
catch(Exception $e) {
$this->_errors[] = $e->getMessage();
}
}
public function passmatch()
{
$data = mysql_query("SELECT * FROM admins WHERE auth = '{$this->_username}' ");
$row = mysql_fetch_array($data);
if ($this->_passmd5 == $row['password']) {
return true;
} else
return false;
}
public function showerrors()
{
foreach($this->_errors as $key => $value) {
echo $value;
}
}
}
?>
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='POST'>
<table>
<tr>
<td>
Username:
</td>
<td>
<input type='text' name='username'>
</td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<input type='password' name='password'>
</td>
</tr>
</table>
<input type='submit' value='Log-in' name='submit'>
</form>
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
@theramore - in sfarsit unu care foloseste OOP. Bv and stuff. Dar...
1. Nu pune parole in sesiuni.
2. MD5 a devenit o gluma.
3. Ai scris de "show-off". OP-ul e incepator, nu-l asalta cu obiecte.
4 Ai facut $this->_username = $_POST['username']; apoi mysql_query("SELECT * FROM admins WHERE auth = '{$this->_username}' ");. Cum te protejezi tu de injectari sql?
5. Clasa ta e dependenta intern de $_POST. Foloseste dependency injecting. Mai bine ar fi un model, dacat sa lucreze direct cu $_POST.
6.
Tine cont ca ambele input-uri pot fi setate, dar goale.
7.
8. Prefera "protected" pt vizibilitatea proprietatilor/metodelor, pt a permite suprascrierea de catre descendenti.
9. In general, in codul unei clase, nu prinde propriile exceptii, ci exceptiile altor clase.
10.
1. Nu pune parole in sesiuni.
2. MD5 a devenit o gluma.
3. Ai scris de "show-off". OP-ul e incepator, nu-l asalta cu obiecte.
4 Ai facut $this->_username = $_POST['username']; apoi mysql_query("SELECT * FROM admins WHERE auth = '{$this->_username}' ");. Cum te protejezi tu de injectari sql?
5. Clasa ta e dependenta intern de $_POST. Foloseste dependency injecting. Mai bine ar fi un model, dacat sa lucreze direct cu $_POST.
6.
Cod: Selectaţi tot
return (isset($_POST['username']) && isset($_POST['password']));
Tine cont ca ambele input-uri pot fi setate, dar goale.
7.
Cod: Selectaţi tot
$checkuserq = mysql_query("SELECT * FROM admins WHERE auth = '{$this->_username}' ");
return (bool)mysql_num_rows($checkuser);
8. Prefera "protected" pt vizibilitatea proprietatilor/metodelor, pt a permite suprascrierea de catre descendenti.
9. In general, in codul unei clase, nu prinde propriile exceptii, ci exceptiile altor clase.
10.
Cod: Selectaţi tot
$data = mysql_query("SELECT * FROM admins WHERE auth = '{$this->_username}' ");
$row = mysql_fetch_array($data);
return ($this->_passmd5 == $row['password']);
Neatza:). Pot sa intervin si eu putin? Poate sa stearga cineva postul daca nu am voie sa ma bag:).
Deci....:
1.
Codul de mai sus e.....aproape nefolositor;) Poti sa adaugi linkul asta:
In tabelul acela care preia datele din mysql
2:
Codul de mai sus extrage date din mysql si le pune in inputuri....tu doar editezi fiecare input cu cea ce vrei:). Atentie: tre sa ii pui numele care e in acel link, adica: editeaza.php
3 - verificare_edit.php:
Chestia de mai sus prea datele din formular si updateaza datele din mysql;)
Astea trei scripturi le pui in folderul cu admin, dupa ce ai pus scriptul de logare al luitheramore.
Inca o data scz daca nu am facut ceva bine, si...ii rog pe cei cu experietena mai multa sa editeze scripturile daca cred ca au vreo erroare...Eu unul nu l-am testat...
Deci....:
1.
Cod: Selectaţi tot
<?php
session_start();
mysql_connect("localhost", "user", "parola") or die("Nu ma pot connecta la MySql");
mysql_select_db("amx") or die("Numele bazei de date este incorect");
$select = mysql_query("SELECT * FROM admins");
while ($afis = mysql_fetch_array($select)){
$id = $afis['id'];
echo '<a href="editeaza.php?aid='.$id.'">Editeaza Adminul cu ID-ul: '.$id.'</a>';
}
?>
Codul de mai sus e.....aproape nefolositor;) Poti sa adaugi linkul asta:
Cod: Selectaţi tot
echo '<a href="editeaza.php?aid='.$id.'">Editeaza Adminul cu ID-ul: '.$id.'</a>';
In tabelul acela care preia datele din mysql
2:
Cod: Selectaţi tot
<?php
session_start();
mysql_connect("localhost", "user", "parola") or die("Nu ma pot connecta la MySql");
mysql_select_db("amx") or die("Numele bazei de date este incorect");
$admin_id = $_GET['aid'];
$select = "SELECT * FROM admins WHERE id = '$admin_id'";
$select2 =mysql_query($select);
while($rand = mysql_fetch_array($select2)){
echo '<form action="verificare_edit.php" method="POST">
<input type="text" name="auth" value="'.$rand['auth'].'" />
<input type="text" name="acces" value="'.$rand['access'].'" />
<input type="text" name="flags" value="'.$rand['flags'].'" />
<input type="text" name="email" value="'.$rand['email'].'" />
<input type="text" name="data_expirarii" value="'.$rand['data_expirarii'].'" />
<input type="text" name="ultima_modificare" value="'.$rand['ultima_modificare'].'" />
<inpyt type="hidden" name="aid" value="'.$admin_id.'" />
<br /<br/>
<inputtype="submit value="Trimite">
</form>';
}
?>
Codul de mai sus extrage date din mysql si le pune in inputuri....tu doar editezi fiecare input cu cea ce vrei:). Atentie: tre sa ii pui numele care e in acel link, adica: editeaza.php
3 - verificare_edit.php:
Cod: Selectaţi tot
<?php
session_start();
mysql_connect("localhost", "user", "parola") or die("Nu ma pot connecta la MySql");
mysql_select_db("amx") or die("Numele bazei de date este incorect");
$auth = $_POST['auth'];
$acces = $_POST['acces'];
$flags = $_POST['flags'];
$email = $_POST['email'];
$data_expirarii = $_POST['data_expirarii'];
$data = date('d.m.Y');
$aid = $_POST['aid'];
$update = mysql_query("UPDATE admins SET auth = '$auth', access = '$acces', flags = '$flags', email = '$email', data_expirarii = '$data_expirarii', ultima_modificare = '$data' WHERE id = '$aid'") or die(mysql_error());
if ($update){
echo "Ai editez userl cu succes!";
}else{
echo error();
}
?>
Chestia de mai sus prea datele din formular si updateaza datele din mysql;)
Astea trei scripturi le pui in folderul cu admin, dupa ce ai pus scriptul de logare al luitheramore.
Inca o data scz daca nu am facut ceva bine, si...ii rog pe cei cu experietena mai multa sa editeze scripturile daca cred ca au vreo erroare...Eu unul nu l-am testat...
Ultima oară modificat Joi Aug 25, 2011 9:43 pm de către EoKlaus, modificat 1 dată în total.
Copilaria nu este de la nastere pana la o anumita varsta, iar la o anumita varsta copilul a crescut si ia toate lucrurile copilaresti si le pune la o parte. Copilaria este regatul unde nu moare nimeni.
[img=http://klaus-blog.hi2.ro/fisiere/imagine.php]
[img=http://klaus-blog.hi2.ro/fisiere/imagine.php]
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
@EoKlaus - incearca url-ul asta pe codul tau: site/editeaza.php?aid=x' or 'x' = 'x
Stiti ca mysql_query este (sau va fi) nominalizata ca functie depasita (deprecated)?
Voi in ce era precambriana programati?
Stiti ca mysql_query este (sau va fi) nominalizata ca functie depasita (deprecated)?
Voi in ce era precambriana programati?
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
1. Tre sa programezi ca si cand toti utilizatorii vor sa-ti hack-uiasca aplicatia.
2. E bine sa-l instruiesti cum trebuie, de la inceput, decat sa afle pe propria piele ca nu toti utilizatorii sunt de incredere.
LE:
"Eu unul nu fac nimica fara oamenide incredere"
Nu fi naiv. Plus ca eu nu ma refer la cei care construiesc/administreaza aplicatia, ci la cei care ii vor folosi serviciile (utilizatorii/clientii).
2. E bine sa-l instruiesti cum trebuie, de la inceput, decat sa afle pe propria piele ca nu toti utilizatorii sunt de incredere.
LE:
"Eu unul nu fac nimica fara oamenide incredere"
Nu fi naiv. Plus ca eu nu ma refer la cei care construiesc/administreaza aplicatia, ci la cei care ii vor folosi serviciile (utilizatorii/clientii).
Ultima oară modificat Joi Aug 25, 2011 12:17 pm de către nevvermind, modificat 1 dată în total.
Da...eu`s cam incepatr in toate chestia asta....adica....In chestia cu hackul...stiu doar de mysql_real_escape_string si de inca o functie cu html_ (dar i-am uitat numele:) ). Mai tre sa invat si eu despre securitate:).
Si...Eu unul nu fac nimica fara oamenide incredere...asa ar trebuiii si el...Adica...toti! Dar na..
Si...Eu unul nu fac nimica fara oamenide incredere...asa ar trebuiii si el...Adica...toti! Dar na..
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
-
- PHPRomania Supporter
- Mesaje: 12
- Membru din: Lun Aug 22, 2011 4:04 pm
- Localitate: Slobozia
- Contact:
nu sunt ironic dar daca dai disable js si formularul returneaza false , mai poti face cv?
Poate imi poti explica si mie mai detaliat pe un mess, skype sa imi dai si mie un exemplu.
Scz sunt incepator am 16 ani si de cam jumatate de an programez php, si js:)
Spune.mi daca ma poti ajuta cu un ex ceva sa iti trimit un id ceva.
Poate imi poti explica si mie mai detaliat pe un mess, skype sa imi dai si mie un exemplu.
Scz sunt incepator am 16 ani si de cam jumatate de an programez php, si js:)
Spune.mi daca ma poti ajuta cu un ex ceva sa iti trimit un id ceva.
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 59 vizitatori