<p>
<b>Krok po kroku:</b><br />
1. Czytasz regulamin usługi<br />
2. Wysyłasz sms o treści xxx pod numer xxx<br />
3. Wpisujesz swoją nazwę użytkownika z forum (wielkość liter brana pod uwagę)<br />
4. Wpisujesz kod, jaki dostałeś w smsie zwrotnym<br />
5. Klikasz "Zrób ze mnie przyjaciela!"<br />
6. Sprawdzasz czy masz nową grupę
</p>
<form action="test.php" method="post">
<p>
<label>Twój nick</label>
<input type="text" name="nick" maxlenght="32" />
<label>Kod</label>
<input type="text" name="check" maxlenght="8" />
<input class="button" type="submit" value="Zamawiam Vip" />
</p>
</form>
<?php
try
{
$nick = $_POST['nick'];
$check = $_POST['check'];
if (!$nick or !$check)
throw new Exception('Nie wpisałeś wymaganych danych!');
$pdo = new PDO('mysql:host=hostBazyDanych;dbname=nazwaBazy', 'login', 'haslo'); // Inicjacja bazy bez parametrów kodowania
//$pdo = new PDO('mysql:host=hostBazyDanych;dbname=nazwaBazy', 'login', 'haslo', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); // Inicjacja bazy z kodowaniem UTF-8
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Ustawienia parametrów wyjątków PDO
$sql = $pdo->prepare('SELECT `usergroup` FROM `mybb_users` WHERE `username` = :nick'); // Przygotowuanie zapytania
$sql->bindValue(':nick', $nick, PDO::PARAM_STR); // Podpinanie jest odporne na SQL Injection ;], a na dodatek szybsze
$sql->execute(); // Wykonanie
$data = $sql->fetch(PDO::FETCH_ASSOC); // Pobranie tablicy asocjacyjnej
if (!$data)
throw new Exception('Wpisałeś niepoprawny nick!<br />'); // Wyrzucamy wyjątek, jeśli nie pobrano żadnych danych z bazy
$sql->closeCursor(); // Zamykam uchwyt
switch($data['usergroup'])
{
case 3:
throw new Exception('Jesteś już super moderatorem, a chcesz zostać VIPem? To Ci zupełnie niepotrzebne :).');
break;
case 4:
throw new Exception('Jesteś już administratorem, a chcesz zostać VIPem? To Ci zupełnie niepotrzebne :).');
break;
case 5:
throw new Exception('Twoje konto jest zawieszone. Konto VIP przydzielamy jedynie w pełni aktywowanym użytkownikom!');
break;
case 6:
throw new Exception('Jesteś już moderatorem, a chcesz zostać VIPem? To Ci zupełnie niepotrzebne :).');
break;
case 7:
throw new Exception('Twoje konto obecnie jest zbanowane. Poczekaj aż minie okres bana!');
break;
case 12:
throw new Exception('Jesteś już redaktorem, a chcesz zostać VIPem? To Ci zupełnie niepotrzebne :).');
break;
}
// $del=1; Skoro tego nie zmieniasz, to po co to jest? Wystarczy wpisać na stałe
// $t = time(); Skoro tego nie zmieniasz, to po co to jest? Wystarczy wpisać na stałe
// $id = "xx"; Skoro tego nie zmieniasz, to po co to jest? Wystarczy wpisać na stałe
// $code = "xx"; Skoro tego nie zmieniasz, to po co to jest? Wystarczy wpisać na stałe
// $type = "sms"; Skoro tego nie zmieniasz, to po co to jest? Wystarczy wpisać na stałe
// $grupa = '8'; Skoro tego nie zmieniasz, to po co to jest? Wystarczy wpisać na stałe
$handle = fopen('http://dotpay.pl/check_code.php?id=xx&code=xx&check='.$check.'&type=sms&del=1', 'r'); $status = fgets($handle, 8
); // $czas_zycia = fgets($handle, 24); // A to po co? Nie wykorzystujesz tego dalej...
// $czas_zycia = rtrim($czas_zycia); // Jak wyżej...
if ($status == 0)
throw new Exception('Kod niepoprawny!');
if (!isset($_COOKIE['ActiveCode'])) {
if ($data['usergroup'] == 8)
{
$sql = $pdo->prepare('UPDATE `mybb_users` SET `usergroup` = 8, `vip` = `vip` + :vip WHERE `username` = :nick');
$sql->bindValue(':vip', 25920000, PDO::PARAM_INT);
}
else
{
$sql = $pdo->prepare('UPDATE `mybb_users` SET `usergroup` = 8, `vip` = :vip WHERE `username` = :nick');
$sql->bindValue(':vip', time() + 25920000
, PDO
::PARAM_INT); }
$sql->bindValue(':nick', $nick, PDO::PARAM_STR);
$sql->execute();
echo '<font color="red"><b>Konto dostało VIPa! Teraz nie spamuj i się nie podniecaj!</b></font>'; // To strasznie niepoprawne HTMLowo jest, zmień to lepiej na style CSS }
}
catch(Exception $e) // Łapiemy błędy
{
echo $e->getMessage(); // Wyświetlamy treść błędu }
?>