Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt banowania czasowego
Forum PHP.pl > Forum > PHP
Rochu
Witam, tworzę skrypt banowania czasowego pod moją grę via www, lecz niestety w pewnym miejscu zaciąłem się i nie wiem co dalej... A otóż to ten skrypt ban_time (kod zaczerpnięty z jednej z wtyczek popularnego CMS'a PHP-Fusion):

  1. <?php
  2. include ("strony/admin/Polish.php");
  3.  
  4. if (!isset($_GET['kas'])) { $_GET['kas'] = ""; }
  5. switch($_GET['kas']){
  6. case 'ban':
  7. if (isset($_POST['baninti']) && (isset($_POST['gracz']) && is_numeric($_POST['gracz']))) {
  8. $krw="";
  9. $ban_time = isset($_POST['ban_time']) && is_numeric($_POST['ban_time']) ? $_POST['ban_time'] : 0;
  10. $ban_trukme = isset($_POST['ban_trukme']) ? $_POST['ban_trukme'] : '';
  11. $ban_priezastis = isset($_POST['ban_priezastis']) ? trim(stripinput($_POST['ban_priezastis'])) : '';
  12. if ($ban_time < 5) {
  13. $krw = "1";
  14. $err = $locale['bs19'];}
  15. if (strlen($ban_priezastis) < 5) {
  16. $krw = "1";
  17. $err = $locale['bs20'];}
  18. if(empty($ban_time) || empty($ban_priezastis)) {
  19. $krw= "1";
  20. $err = $locale['bs21'];}
  21. if($krw=="1"){
  22. echo $err;
  23. }else{
  24. if($ban_trukme==="sek") { $ban_trukme = $ban_time; }
  25. if($ban_trukme==="min") { $ban_trukme = $ban_time*60; }
  26. if($ban_trukme==="val") { $ban_trukme = $ban_time*3600; }
  27. if($ban_trukme==="die") { $ban_trukme = $ban_time*86400; }
  28. if($ban_trukme==="sav") { $ban_trukme = $ban_time*604800; }
  29. if($ban_trukme==="men") { $ban_trukme = $ban_time*2592000; }
  30. if($ban_trukme==="met") { $ban_trukme = $ban_time*31536000; }
  31. $udata = mysql_fetch_array(mysql_query("SELECT * FROM tribal_gracze WHERE gracz='".$_POST['gracz']."'"));
  32. if ($udata['rola'] < 1) {
  33. $result=mysql_query("INSERT INTO tribal_bany (ban_id, ban_time, ban_priezastis, ban_kada) VALUES
  34. ('".$_POST['gracz']."', '".(time()+$ban_trukme)."', '$ban_priezastis','".time()."');");
  35. $result=mysql_query("UPDATE tribal_gracze SET zbanowany='1' WHERE gracz='".$_POST['gracz']."'");
  36. if ($result) redirect("?akcja=ban_time&kas=ban");
  37. }
  38. }
  39. }
  40. if (!isset($_POST['search']) || !isset($_POST['searchko'])) {
  41. echo "<form name='searchff' method='post' action='?akcja=ban_time&kas=ban'>";
  42. echo "<table align='center'><tr>
  43. <td>".$locale['bs26'].": <input type='text' name='searchko' class='textbox' style='width:200px'></td>
  44. </tr><tr>
  45. <td>".$locale['bs27']."<br><label><input type='radio' name='tipas' value='login' checked='checked' />".$locale['bs24']."</label></td>
  46. </tr><tr>
  47. <td><label><input type='radio' name='tipas' value='gracz' />".$locale['bs25']." </label></td>
  48. </tr><tr>
  49. <td align='center'><input type='submit' name='search' value='".$locale['bs26']."'></td>
  50. </form></table>\n";
  51. } elseif (isset($_POST['search']) && isset($_POST['searchko'])) { $ieskom = "";
  52. if ($_POST['tipas'] == "gracz" && is_numeric($_POST['searchko'])) {
  53. $ieskom .= "gracz='".$_POST['searchko']."' ";
  54. } elseif ($_POST['tipas'] == "login" && preg_match("/^[-0-9A-Z_@\s]+$/i", $_POST['searchko'])) {
  55. $ieskom .= "login LIKE '%".$_POST['searchko']."%' "; }
  56. if ($ieskom) {
  57. $result = mysql_query("SELECT gracz, login FROM tribal_gracze WHERE ".$ieskom." ORDER BY login");
  58. }
  59. if (isset($result) && is_numeric($result)) {
  60. echo "<form method='post' action='?akcja=ban_time&kas=ban&gracz'>";
  61. $i = 0; $v = "";
  62. while ($data = array($result)) { $i++;
  63. $v .= "<label><input type='radio' name='gracz' value='".$data['gracz']."'> ".$data['login']."</label>";
  64. }
  65. if ($i > 0) {
  66. echo "<table align=center><tr>
  67. <td>".$locale['bs28']."</td>
  68. <td><b>$v</b></td>
  69. </tr><tr>
  70. <td>".$locale['bs04']."</td>
  71. <td><input name='ban_time' style='width:40px;' class='textbox'>
  72. <select name='ban_trukme' class='textbox'>
  73. <option value='sek'>".$locale['bs05']."</option>
  74. <option value='min'>".$locale['bs06']."</option>
  75. <option value='val'>".$locale['bs07']."</option>
  76. <option value='die'>".$locale['bs08']."</option>
  77. <option value='sav'>".$locale['bs09']."</option>
  78. <option value='men'>".$locale['bs10']."</option>
  79. <option value='met'>".$locale['bs11']."</option>
  80. </select></td></tr><tr>
  81. <td>".$locale['bs12']."</td>
  82. <td><textarea name='ban_priezastis' style='width:200px;height:40px;' class='textbox'></textarea></td>
  83. </tr><tr>
  84. <td><input type='submit' name='baninti' value='".$locale['bs13']."'></td>
  85. </tr></table>
  86. </form>\n";
  87. } else {
  88. echo $locale['bs23']."<br><br>\n";
  89. echo "<a href='?akcja=ban_time&kas=ban'>".$locale['bs22']."</a>\n";}
  90. echo "</form>\n";
  91. } else {
  92. echo $locale['bs23']."<br><br>\n";
  93. echo "<a href='?akcja=ban_time&kas=ban'>".$locale['bs22']."</a>";}
  94. }
  95. break;
  96. case 'unban':
  97. if(isset($_GET['gracz']) && is_numeric($_GET['gracz'])) {
  98. $result=mysql_query("UPDATE tribal_gracze SET zbanowany='0' WHERE gracz='".$_GET['gracz']."'");
  99. $result=mysql_query("DELETE FROM tribal_bany WHERE ban_id='".$_GET['gracz']."'");
  100. if ($result) redirect("ban_time");
  101. }
  102. break;
  103. default:
  104. include ("strony/admin/Polish2-user.php");
  105. echo "<a href=?akcja=ban_time&kas=ban>".$locale['bs18']."</a><br><br>";
  106. echo "<b>".$locale['bs14']."</b><br>";
  107. $bl=row("SELECT * FROM tribal_bany");
  108. while($nx=array($bl)){
  109. $nm=mysql_fetch_array(mysql_query("SELECT login FROM tribal_gracze WHERE gracz='".$nx['ban_id']."'"));
  110. echo "<a href=?akcja=profil&gracz=".$nx['ban_id'].">".$nm['login']."</a> (".$locale['bs15']." ".showdate("forumdate",$nx['ban_kada']).") ".$locale['bs16']." <b>".showdate("forumdate",$nx['ban_time'])."</b>
  111. ".$locale['bs12']." <u><b>";
  112. if($nx['ban_priezastis']!=''){ echo $nx['ban_priezastis']."</b></u>";
  113. } echo " <a href='?akcja=ban_time&kas=unban&gracz=".$nx['ban_id']."' onclick='return unbann();'> [".$locale['408']."]</a><br>";
  114. }
  115. if(!mysql_num_rows($bl) > 0) echo $locale['bs17']."<br><br>";
  116. echo "<script type='text/javascript'>"."\n"."
  117. function unbann(login) {\n";
  118. echo "return confirm('".$locale['408']."');\n}\n</script>\n";
  119. }
  120.  
  121. ?>


I problem tkwi w tym, że gdy wchodzę w wyszukiwanie graczy i wpiszę POPRAWNIE któregoś z nich to za każdym razem wyskakuje mi wiadomość, że nic nie znaleziono... Jeśli ktoś może coś poradzić to bardzo proszę winksmiley.jpg Jeszcze dodam strukturę tej tabeli:

  1. CREATE TABLE `tribal_bany` (
  2. `ban_id` VARCHAR( 64 ) NOT NULL,
  3. `ban_time` int(10) UNSIGNED NOT NULL,
  4. `ban_priezastis` text NOT NULL,
  5. `ban_kada` int(10) UNSIGNED NOT NULL,
  6. PRIMARY KEY ( `ban_id` )
  7. ) ENGINE = MYISAM;


gracz = id_gracz
lord2105
poproszę o strukturę tabeli tribal_gracze
Rochu
Oto i ona smile.gif

  1. CREATE TABLE IF NOT EXISTS `tribal_gracze` (
  2. `gracz` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(15) NOT NULL,
  4. `haslo` varchar(40) NOT NULL,
  5. `email` varchar(40) NOT NULL,
  6. `email_aktywny` int NOT NULL DEFAULT '0',
  7. `kod_aktywacyjny` varchar(20) NOT NULL DEFAULT '',
  8. `ostatnio_zalogowany` int(11) NOT NULL,
  9. `obrazek` int(11) NOT NULL,
  10. `rola` int(11) NOT NULL,
  11. `zbanowany` int(11) NOT NULL,
  12. `id_miasta` int(11) NOT NULL DEFAULT '0',
  13. `nazwa_miasta` varchar(40) NOT NULL,
  14. `monety` INT NOT NULL DEFAULT '0',
  15. PRIMARY KEY (`gracz`),
  16. UNIQUE KEY `login` (`login`),
  17. UNIQUE KEY `email` (`email`),
  18. UNIQUE KEY `nazwa_miasta` (`nazwa_miasta`)
  19. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
lord2105
ta wyszukiwarka graczy w której nic nie możesz wyszukać ma odnosić się do zbanowanych?
Rochu
Nie... Wpisuje id lub login gracza, po czym wyszukuje mi takowego usera, i wyswietla mi cos takowego, czyli login a obok kropka, gdzie zaznaczam usera do banowania smile.gif (screen z tegoż skryptu tylko na tym CMS'ie biggrin.gif):
fander
$sql = "INSERT INTO tribal_bany (ban_id, ban_time, ban_priezastis, ban_kada) VALUES ($ban_id,$ban_time,'$ban_ban_priezastis',ban_kada)"

do czego jest ban_kada ?
Rochu
ban_kada (kada w języku serbskim = kiedy) czyli kiedy ban został nałożony winksmiley.jpg [nie jestem do końca pewny bo ja tego skryptu nie pisałem, tylko wziąłem go z jednej wtyczki z CMS'a]
fander
to wykonujesz zapytanie które ci napisałem, zapisujesz jedynie odpowiednie wartości w zmiennych


$ban_id = $user_id //ten który masz zapisaney pod <input type="ratio" name="<?=$result['user_id']?>"

$ban_time = /widz że masz do wyboru minuty, godziny, dni, miesiące więc musisz sobie funkcje która ci przeliczy wartości/

$ban_ban_priezastis = $_POST["ban_prezastis"]

$ban_kada = time()


Cudów tutaj nie ma nie ma
Rochu
@fander ty chyba nie zrozumiałeś, podajesz mi kod, który dodaje do bazy danych już przesyłane informacje... A zacytuje ci mój problem:

Cytat
I problem tkwi w tym, że gdy wchodzę w wyszukiwanie graczy i wpiszę POPRAWNIE któregoś z nich to za każdym razem wyskakuje mi wiadomość, że nic nie znaleziono...


Więc łazi o to, że gdzieś mam błąd z pobieraniem rekordów z bazy danych (SELECT * .... itd.), tylko nie mogę rozkminić gdzie dokładnie tkwi ten problem...
lord2105
  1. $bl=row("SELECT * FROM tribal_bany");


Zmień na:

  1. $bl=mysql_fetch_array(mysql_query("SELECT * FROM tribal_bany"));


Rochu
Jak zrobić, by zamiast tego szukania zrobić po prostu od razu wyświetlał się formularz banujący, gdzie wpisywane byłoby id gracza lub jego login??

Daję POMÓGŁexclamation.gif!


Albo po prostu jakoś inaczej przerobić lub od nowa pomóc zrobić jak ktoś może, że mam formularz, gdzie wpisuje id usera banowanego, ile dni ma być zbanowany i powod banowania i zeby sie dodawalo podobnie do tabeli tribal_bany oraz ustawialo w tribal_gracze pole zbanowany na 1. Co do automatycznego odbanowania to sam sobie sprobuje zrobic smile.gif
lord2105
  1. <?php
  2. if (isset($_POST)) {
  3. if (empty($_POST['id_user']) || empty($_POST['days']) || empty($_POST['reason'])) {
  4. echo 'Podaj wszystkie dane';
  5. }
  6. else {
  7. $sql = "INSERT INTO tribal_bany (ban_id,ban_time,ban_priezastis,ban_kada) VALUES ('".$_POST['id_user']."','".(time()+$_POST['days']*86400)."','".$_POST['reason']."','".time()."')";
  8. $set_falge = "UPDATE tribal_gracze SET zbanowany = 1 WHERE gracz = '".$_POST['id_user']."'";
  9. if (mysql_query($sql)) {
  10. if ($set_falge) {
  11. echo "zbanowano gracza";
  12. }
  13. else mysql_error();
  14. }
  15. else mysql_error();
  16. }
  17. }
  18. ?>
  19. <form action = "ten_plik.php" method = "post">
  20. <input type='text' name = 'id_user'>
  21. <input type='text' name = 'days'>
  22. <textarea name='reason'></textarea>
  23. <input type='submit' name='search' value=' '>
  24. </form>


Masz szczęście, że dziś @Damonsson poprawił mi humor haha.gif
Rochu
Dziękuję bardzo winksmiley.jpg Oczywiście POMÓGŁ obowiązkowo winksmiley.jpg
Jeszcze o jedną pomoc bym prosił. A właściwie mam problem ze skryptem wyświetlającym bany. Chyba kompletnie go źle zrobiłem... Prosiłbym o pomoc w wykonaniu tegoż skryptu wraz ze stronicowaniem, a właściwie pobierałoby dane i wyświetlało w tabelce login gracza | ban do kiedy | powod bana | kiedy został przyznany. Skrypcik opierał by się na podstawie danych ze skryptu lord2105

Pozdrawiam smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.