Fișiere și programe necesare:
Un program sau un webserver pe care să încărcați fișierele necesare UCP-ului și o bază de date MySQL. (Exemple de programe: wamp, xampp)
Un program cu ajutorul căruia puteți edita fișiere PHP, HTML și CSS cu care să fiți obișnuiți și să vă placă să lucrați în el.
Partea I a tutorialului:




Quote
((Crearea conexiunii la baza de date și scrierea câtorva informații despre server pe site-ul nostru.))
1.Pentru început o să creăm un fișier nou și o să îl denumim index.php, în acest fișier o să facem pagina principală a site-ului, pe această pagină intră utilizatorii în momentul în care ne accesează site-ul.
<html>
<head>
<title>Titlul site-ului</title> <!-- Aici trecem numele site-ului nostru -
</head>
<body>
<!-- Aici o să scriem tot ce trebuie să apară pe site. -
</body>
</html>

Cam așa arată pagina noastră la început, cu timpul o să tot adăugăm informații noi, dar acum trebuie să avem o pagină standard pe care se pot conecta utilizatori și nu o să le apară că pagina nu există.
2.Acum o să creăm un fișier nou în care o să ne conectăm la baza de date și o să citim sau inserăm diferite lucruri în aceasta și o să îl denumim connection.php
<?php
//Aici o să ne scriem întregul cod PHP.
?>
Acum o să facem conexiunea la baza de date, am pus mai multe explicații despre cod în comentariile din cod, cam așa ar trebui să arate noul nostru cod în pagina connection.php cu funcția de conectare la baza de date făcută:
<?php
//Aici o să ne scriem întregul cod PHP.
Quote
class Connection { //Aceasta este o clasă, este ca și un panou cu mai multe ”butoane” pe care le putem apăsa dacă dorim să executăm o acțiune.
private static $instance; //O să ne folosim de acestă variabilă când citim de pe o pagină diferită informații din baza de date.
public static $con; //Aici definim numele variabilului în care se află ”conexiunea”.

private function __construct() { //Această functie este un __construct care să spunem că pornește automat când ”pornim panoul” adică class-ul.
$db['mysql'] = array( //Aici definim datele necesare conexiunii la baza de date.
'host' => '127.0.0.1', //Aici punem IP-ul adică host-ul bazei noastre de date.
'username' => 'root', //Aici punem username-ul cu care ne conectăm la baza de date.
'password' => '', //Aici punem parola pe care o folosim în momentul autentificării în baza de date.
'dbname' => 'samp' //Aici scriem numele bazei de date la care dorim să ne conectăm.
);

try { //Încercăm să vedem dacă funcționează conexiunea fără erori.
self::$con = new PDO('mysql:host='.$db['mysql']['host'].';dbname='.$db['mysql']['dbname'].';charset=utf8',$db['mysql']['username'],$db['mysql']['password']); //Aici executăm conexiunea.
self::$consetAttribute(PDO::ATTR_EMULATE_PREPARES, false);
self::$consetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) { //Dacă nu functionează o să ne arate o eroare care nu poate fi folosită de alte persoane să afle date despre baza noastră de date.
echo $egetMessage();
}
}

public static function init() //Avem nevoie de această funcție ca să putem folosii restul funcțiilor noastre și pe pagina principală.
{
if (is_null(self::$instance))
{
self::$instance = new self();
}
return self::$instance;
}
}
?>

Acum, ca să ne funcționeze acest cod și pe pagina principală trebuie să il includem, punem această linie de cod chiar la începutul paginii index.php:
<?php require_once('connection.php'); ?>
Acum o să citim din baza noastră de date numărul de conturi create pe server și o să le afișăm. Pentru început intrăm în pagina connection.php și înainte de închiderea ultimei acolade și ?> punem următorul cod:

Quote
public static function getRegistredPlayers() { //Aici definim numele funcției cu ajutorul căreia o să aflăm numărul de conturi înregistrate pe server.
try{
$q = self::$conprepare("SELECT COUNT(*) FROM `TABEL_CONTURI`"); //Aici executăm comanda de căutare a conturilor și numărarea lor în baza de date.
$qexecute();
$numar_conturi = $qfetchColumn(); //Aici numărăm conturile existente în baza de date.
return $numar_conturi;
} catch (PDOException $e) {
echo $egetMessage();
}
}

Acum ne întoarcem la pagina index.php ca să afișăm numărul de conturi existente în baza de date. Următoarea linie de cod trebuie pusă în interiorul tag-urilor de <body></body>
Conturi existente: <?php echo Connection::init()getRegistredPlayers(Connection::$con); //Executăm funcția de numărare a conturilor și le afisăm pe pagină. ?>




Partea a II-a a tutorialului:
Aceasta ar fi prima parte a ghidului, nu o să intru în mai multe detalii în acest tutorial ca să nu vă încurc cu prea multe coduri din prima, o să fie puțin greu să urmați acest tutorial dacă nu aveți cunoștințe în nicio limbă de programare web, dar o să încerc să explic cât mai bine.



Quote
((Crearea unei pagini de login și crearea unui profil pentru utilizator.))
Intrăm pe pagina index.php și chiar după linia cu <body> trecem următorul cod care o să ne redirecționeze la pagina de login dacă dăm click pe text:
<a href="login.php">Click aici pentru login</a><!--Aici trebuie să dea click utilizatorul ca să intre pe pagina de login.
Acum o să creăm un fișier nou și o să îl denumim login.php și punem următorul cod în el:

<?php session_start(); //Pornim o sesiune pe care o să o folosim pentru stocarea datelor despre jucător. ?>
<head>
<title>Titlul paginii</title>
</head>
<?php
require_once('connection.php'); //Aici solicităm pagina pe care avem funcțiile de conectare la baza de date.
După ce am adăugat codul trebuie să verificăm dacă utilizatorul este deja logat pe vreun cont sau nu, dacă acesta nu este logat pe niciun cont poate să dea login, dacă este deja logat o să îl redirecționăm la pagina de profil:
if(isset($_SESSION["user_username"])){ //Verificăm dacă este setată sesiunea cu numele utilizatorului, dacă este deja setată înseamnă că acesta este deja logat și o să îl redirecționăm pe pagina de profil.
header('Location: profile.php'); //Aici îl redirecționăm pe pagina de profil.
exit(); //Aici ne asigurăm că nu poate continua navigarea pe pagina de login chiar dacă nu este redirecționat către profil.
} else { //Aici o să punem codul dacă acesta nu este încă logat.
Acum că ne-am asigurat că acesta nu este logat pe niciun cont putem începe scrierea codului pentru login:
if(isset($_POST['login_submit'])){ //Verificăm dacă a fost apăsat sau nu butonul de login.
if (!isset($_SESSION['token'])) { return false; } //Verificăm dacă este setată sesiunea numită ”token”.
else if (!isset($_POST['login_token'])) { return false; } //Verificăm dacă există în post-ul userului input-ul ”login_token”.
else if ($_SESSION['token'] !== $_POST['login_token']) { return false; } //Verificăm dacă input-ul diferă de sesiune, dacă diferă înseamnă că a fost modificat ceva de utilizator și nu este bine.
else if ($_SESSION['token'] === $_POST['login_token']) { //Verificăm dacă input-ul este similar cu sesiunea.
if(Connection::init()checkIfUserExists(Connection::$con, $_POST['login_name'], $_POST['login_password']) == 1){ //Ne asigurăm că numele și parola pe care încearcă să se logheze jucătorul există.
$_SESSION["user_username"] = $_POST['login_name']; //Setăm sesiunea cu numele jucătorului.
$_SESSION["user_id"] = Connection::init()getUserID(Connection::$con, $_POST['login_name']); //Setăm sesiunea cu ID-ul din baza de date a utilizatorului.
header('Location: profile.php'); //Aici îl redirecționăm pe pagina de profil după logare.
exit(); //Aici ne asigurăm că nu poate continua navigarea pe pagina de login chiar dacă nu este redirecționat către profil.
} else {
header('Location: login.php'); //Aici îl redirecționăm înapoi pe pagina de login dacă contul este inexistent.
exit(); //Aici ne asigurăm că nu poate continua navigarea pe pagina de login chiar dacă nu este redirecționat către pagina de login.
}
return true;
}
else { return false; }
} else {
$token = md5(uniqid(rand(), true)); //Creăm un token unic și criptat.
$_SESSION['token'] = $token; //Setăm sesiunea ”token”.
}
?>
Precizez că în mod normal trebuia scris prima dată codul HTML și după cel PHP dar am ales să îl pun în ordinea în care apare codul pe pagină ca să nu vă derutez și mai mult.
Acum putem scrie codul HTML pentru form-ul de login:

<b>Login</b> <!-- Acesta este un titlu simplu care apare peste form-ul de login. -
<hr /> <!-- Aceasta este o linie care desparte titlul de form. -
<form action="" method="post"> <!-- Aici începem form-ul de login. -
<label for="login_name">Nume utilizator: </label><input type="text" name="login_name"/><br /> <!-- Aici o să își scrie utilizatorul numele. -
<input type="hidden" name="login_token" value="<?php echo $token; ?>"> <!--Această linie ne folosește să creăm un cod unic pentru fiecare login și să ne asigurăm că nu ”se joacă” cineva cu sistemul nostru de login.-
<label for="login_password">Parola utilizator: </label><input type="password" name="login_password" /><br /> <!-- Aici o să își scrie utilizatorul parola. -
<button type="submit" name="login_submit">Logare</a></button> <!-- Acesta este butonul care trebuie apăsat să ne logăm. -
</form>
<?php } ?> <!-- Închidem acolada pusă mai sus la codul în care am verificat dacă utilizatorul este logat pe alt cont sau nu. -
Acum că am terminat pagina de login intrăm pe pagina connection.php și punem următorul cod înainte de închiderea ultimei acolade și ?>
public static function checkIfUserExists($con, $username, $password) { //Aici definim numele funcției cu ajutorul căreia o să aflăm numărul de conturi înregistrate pe server.
try{
$stmt = Connection::$conprepare("SELECT COUNT(*) FROM `TABEL_CONTURI` WHERE `Username` = :username AND `Password` = :password LIMIT 0,1");
$stmtbindParam(':username', $username,PDO:ARAM_STR);
$stmtbindParam(':password', $password,PDO:ARAM_STR);
$stmtexecute();
$exists = $stmtfetchColumn();
return $exists;
} catch (PDOException $e) {
echo $egetMessage();
}
}

public static function getUserData($con, $userid, $data) { //Aici definim numele funcției cu ajutorul căreia o să aflăm numărul de conturi înregistrate pe server.
try{
$stmt = Connection::$conprepare("SELECT `".$data."` FROM `TABEL_CONTURI` WHERE `UserID` = :userid");
$stmtbindParam(':userid', $userid,PDO:ARAM_STR);
$stmtexecute();
$row = $stmtfetch();
return $row[$data];
} catch (PDOException $e) {
echo $egetMessage();
}
}

public static function getUserID($con, $username) { //Aici definim numele funcției cu ajutorul căreia o să aflăm numărul de conturi înregistrate pe server.
try{
$stmt = Connection::$conprepare("SELECT `UserID` FROM `TABEL_CONTURI` WHERE `Username` = :username");
$stmtbindParam(':username', $username,PDO:ARAM_STR);
$stmtexecute();
$row = $stmtfetch();
return $row['UserID'];
} catch (PDOException $e) {
echo $egetMessage();
}
}
Acum o să creăm un fișier nou pe care o să îl denumim profile.php și punem următorul cod în el:
<?php
session_start(); //Pornim o sesiune pe care o să o folosim pentru login.
require_once('connection.php');

if(!isset($_SESSION["user_username"])){ //Verificăm dacă este setată sesiunea cu numele utilizatorului, dacă este deja setată înseamnă că acesta este deja logat și o să îl redirecționăm pe pagina de profil.
header('Location: index.php'); //Aici îl redirecționăm pe pagina principala.
exit(); //Aici ne asigurăm că nu poate continua navigarea pe pagina de login chiar dacă nu este redirecționat către profil.
} else { //Aici o să punem codul dacă acesta nu este încă logat.

$level = Connection::init()getUserData(Connection::$con, $_SESSION["user_id"], "Level"); //Setăm ca variabila $level să aibă ca valoare nivelul contului citit din baza de date.
$money = Connection::init()getUserData(Connection::$con, $_SESSION["user_id"], "Money"); //Setăm ca variabila $money să aibă ca valoare banii de pe contul jucătorului citit din baza de date.
$skin_id = Connection::init()getUserData(Connection::$con, $_SESSION["user_id"], "Money"); //Setăm ca variabila $skin_id să aibă ca valoare skin-ul jucătorului citit din baza de date.
?>

<img src="
Please Login or Register to see this Hidden Content
<?php echo $skin_id; ?>.png"> <!-- Punem o poză cu skin-ul utilizatorului pe pagină. -
Level: <?php echo $level; ?> <!-- Afișăm nivelul jucătorului. -
Bani: <?php echo $money; ?>$ <!-- Afișăm banii deținuți de jucător. -
<a href="logout.php">Click aici pentru logout</a><!--Aici trebuie să dea click utilizatorul ca să intre pe pagina de logout.
<?php } ?>
Cam așa ar arăta un profil foarte simplu și standard, voi desigur puteți citii mai multe date despre utilizator după modelele din cod și puteți aduce și alte modificări, dar eu am ales să fac un profil simplu în care să și pricepeți ceva.
Acum trebuie să facem un fișier nou numit logout.php în care punem următorul cod scurt:
<?php
session_start(); //Pornim o sesiune pe care o să o folosim pentru stocarea datelor despre jucător.

unset($_SESSION["user_username"]); //Oprim sesiunea cu numele utilizatorului.
unset($_SESSION["user_id"]); //Oprim sesiunea cu id-ul utilizatorului.

session_destroy(); //Distrugem sesiunea.
header('Location: index.php'); //Redirecționăm utilizatorul pe prima pagină.
exit();
Cum am mai spus mai sus, un keylogger poate fii sub forma de executabil (exe) sau chiar ascuns într-o imagine (bind)
Vă dau un sfat, descarcaţi aplicaţiile necesare de pe site-uri oficiale,regula de aur "Nu luaţi de la străini executabile, mai ales de la cei care vă promit tot felul de prostii".
Nu luaţi "hackuri de floodat", "hackuri de spart parole yahoo",' nu există ceva direct de spart parole yahoo sau altceva.Există şi alte metode printre care si programul nostru de faţa numit "Keylogger" poate fi introdus într-un PC.Am văzut că recent,mulţi playeri se plâng că au luat aimbot-uri de pe net şi în loc de aimbot,au primit un keylogger în PC.
Daca luati o aplicaţie şi nu sunteţi aşa siguri de ea, vă recomand
Please Login or Register to see this Hidden Content
.
Ce este acest "Virus-Total" ? Este un site unde poţi scana orice fel de fişier,acest fişier va fi supus la scanare de către anti-virusuri cu update la zii.

__________________________________________________ _____________________________
Vă recomand sa aveţi instalat în PC un anti-virus bun. Este un aspect important în prevenirea keylogger-ului.
__________________________________________________ _____________________________

Securitate (impotriva keylogger-ului)
Pentru securitate este recomandat
să aveţi mereu FireWall-ul ON
nu descărcaţi niciodată fişierele care nu le cunoaşteţi / hack-uri / executabile de pe site-uri neoficiale
evitaţi persoanele care vă oferă hack-uri / executabile indiferent de ce fac acestea, indiferent dacă are dovadă ca funcţionează


Prin intermediul acestui topic vreau sa va spun sa evitati hack-urile si programele ajutatoare.
Intr-un final, folosind programe de genul se ajunge mereu la probleme (ban / furtul contului etc..)
Prin urmare, nu vad rostul folosirii acestor programe.
Este un sfat prietenesc.