Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[PHP][TUT]Support - wersja Admin ->klient i klient->Admin


Rekomendowane odpowiedzi

Opublikowano

A więc czas na tutka :). Jest to system zgłoszeń. Na wstępie napiszę ,że nie ma wysyłania maili ;)

 

zrzut SQL :

CREATE TABLE IF NOT EXISTS `support` (
 `Id` int(11) NOT NULL AUTO_INCREMENT,
 `Title` varchar(100) NOT NULL,
 `Tresc` text NOT NULL,
 `Odp_na` int(11) NOT NULL,
 `Przez` varchar(100) NOT NULL,
 `Kiedy` varchar(100) NOT NULL,
 `IP` varchar(100) NOT NULL,
 `Swiat` int(11) NOT NULL,
 `Otwarty` enum('Tak','Nie') NOT NULL,
 PRIMARY KEY (`Id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Właśnie. Macie tu kolumnę świat - jest to inaczej numer serwera (sorki robiłem pod swoją grę ;). Przeróbcie to na swoje potrzeby)

 

A oto kod :

 

 

Wersja dla adminów(tych ,którzy przeglądają zgłoszenia). Stworzyłem 2 oddzielne pliki ;). Zabezpieczone (raczej)

<?php
session_start();
require_once("Layout.php");

if(!empty($_GET['close'])) {
$close = (int)$_GET['close'];
mysql_query("UPDATE support SET Otwarty='Nie' WHERE Id=$close");
}
if(isset($_GET['odpisz']) && !empty($_GET['show'])) {
//Dobra. Konwersja znaków i finito ;p
$user = $db->Query("SELECT * FROM support WHERE Id=$show AND Swiat=1 ORDER BY Kiedy ASC");
$show = (int)$_GET['show'];

$Opis_p = addslashes($_REQUEST["odpisz"]);
//Polskie znaki 
str_replace('Ł', 'Ł', $Opis_p);
str_replace('ł', 'ł', $Opis_p);
str_replace('ź', '?', $Opis_p);
str_replace('Ź', '?', $Opis_p);
str_replace('Ż', 'Ż', $Opis_p);
str_replace('ż', 'ż', $Opis_p);
str_replace('Ą', 'Ą', $Opis_p);
str_replace('ą', 'ą', $Opis_p);
str_replace('ż', 'ż', $Opis_p);
str_replace('Ż', 'Ż', $Opis_p);
str_replace('Ę', 'Ę', $Opis_p);
str_replace('ę', 'ę', $Opis_p);
str_replace('Ń', 'Ń', $Opis_p);
str_replace('ń', 'ń', $Opis_p);
str_replace('Ś', '?', $Opis_p);
str_replace('ś', '?', $Opis_p);
str_replace('ó', 'ó', $Opis_p);
str_replace('ć', 'ć', $Opis_p);
str_replace('Ó', 'Ó', $Opis_p);
str_replace('Ć', 'Ć', $Opis_p);

//Znaki zagrażające zapytaniu
str_replace('"', '"', $Opis_p);
str_replace('&', '&', $Opis_p);
str_replace("'", ''', $Opis_p);
str_replace('<', '<', $Opis_p);
str_replace('>', '>', $Opis_p);
str_replace('~', '?', $Opis_p);

$title = $user['Title'];
$uName = $uzytkownik['Name'];
$IP = $_SERVER["REMOTE_ADDR"];
mysql_query("INSERT INTO support VALUES (NULL, '$title', '$Opis_p', $show, '$uName', NOW(), '$IP', 1, 'Tak')");
$_SESSION['user'] = $uzytkownik['Id']; //Na potrzeby moje. Gubiło mi tu sesje. Można wywalić tą linijkę

}
?>
<div class="news">
<div class="news_g">
</div>
<div class="news_s">
<?php
//Support ;p :
//Pobierzmy te wszystkie otwarte zgłoszenia ,w kolejnosci stare->nowe (no i ost. odp. ;])
if(!empty($_GET['show'])) {
//Wybrał zgłoszenie. Nie je pokaże i zrobi formularzyk ;]
$show = (int)$_GET['show'];
$user = $db->Query("SELECT * FROM support WHERE Id=$show AND Swiat=1 ORDER BY Kiedy ASC");

echo'<table border="0" align="center">
<tr><td><b>Napisał '.$user['Przez'].'<b><td><b>Napisano : '.$user['Kiedy'].'</b>
<tr><td colspan="2">'.$user['Tresc'];
$support_ID = $user['Id'];
//Pobierzmy wszystkie odp 
$answers = @mysql_query("SELECT * FROM support WHERE Odp_na=$show ORDER BY Kiedy ASC");
while($answer = @mysql_fetch_array($answers)) {
$_SESSION['user'] = $_SESSION['dupek']; //Na potrzeby. Można wykasować linijkę
echo'
<tr><td colspan="2"><hr><b>Napisano :'.$answer['Kiedy'].' Przez : '.$answer['Przez'].'</b><br />'.$answer['Tresc'];
}
echo'
<hr>
<tr><td colspan="2"><b>Odpisz :</b><br />
<form action="?show='.$show.'&odpisz" method="POST">
<textarea name="odpisz" style="width:100%; height:200px;">
</textarea><br />
<input type="submit" value="Odpisz na zgłoszenie">
</form>
<tr><td colspan="2"><a href="?close='.$support_ID.'">Zamknij zgłoszenie</a>
</table>';

} else {
$questions = mysql_query("SELECT * FROM support WHERE Otwarty='Tak' AND Odp_na <1 AND Swiat=1 ORDER BY Kiedy ASC");
echo'
<table border="1" align="center">
<tr><td>Id<td>Tytuł :<td>Ostatnia odpowiedź :';
while($quest = mysql_fetch_array($questions)) {
echo'<tr><td>'.$quest['Id'].'<td><a href="?show='.$quest['Id'].'"><b>'.$quest['Title'].'</b></a><td>'.$quest['Kiedy'];
}
echo'</table>';
}
?>
</div>
<div class="news_foot">
</div>
</div>

 

Wersja dla piszących zgłoszenia :) (to jest formularz do wysłania go) :

<?php
session_start();
require_once("Layout.php");

if(isset($_GET['write'])) {
$Opis_p = addslashes($_REQUEST["title"]);
//Polskie znaki 
str_replace('Ł', 'Ł', $Opis_p);
str_replace('ł', 'ł', $Opis_p);
str_replace('ź', '?', $Opis_p);
str_replace('Ź', '?', $Opis_p);
str_replace('Ż', 'Ż', $Opis_p);
str_replace('ż', 'ż', $Opis_p);
str_replace('Ą', 'Ą', $Opis_p);
str_replace('ą', 'ą', $Opis_p);
str_replace('ż', 'ż', $Opis_p);
str_replace('Ż', 'Ż', $Opis_p);
str_replace('Ę', 'Ę', $Opis_p);
str_replace('ę', 'ę', $Opis_p);
str_replace('Ń', 'Ń', $Opis_p);
str_replace('ń', 'ń', $Opis_p);
str_replace('Ś', '?', $Opis_p);
str_replace('ś', '?', $Opis_p);
str_replace('ó', 'ó', $Opis_p);
str_replace('ć', 'ć', $Opis_p);
str_replace('Ó', 'Ó', $Opis_p);
str_replace('Ć', 'Ć', $Opis_p);

//Znaki zagrażające zapytaniu
str_replace('"', '"', $Opis_p);
str_replace('&', '&', $Opis_p);
str_replace("'", ''', $Opis_p);
str_replace('<', '<', $Opis_p);
str_replace('>', '>', $Opis_p);
str_replace('~', '?', $Opis_p);

$Tresc = addslashes($_REQUEST["tresc"]);
//Polskie znaki 
str_replace('Ł', 'Ł', $Tresc);
str_replace('ł', 'ł', $Tresc);
str_replace('ź', '?', $Tresc);
str_replace('Ź', '?', $Tresc);
str_replace('Ż', 'Ż', $Tresc);
str_replace('ż', 'ż', $Tresc);
str_replace('Ą', 'Ą', $Tresc);
str_replace('ą', 'ą', $Tresc);
str_replace('ż', 'ż', $Tresc);
str_replace('Ż', 'Ż', $Tresc);
str_replace('Ę', 'Ę', $Tresc);
str_replace('ę', 'ę', $Tresc);
str_replace('Ń', 'Ń', $Tresc);
str_replace('ń', 'ń', $Tresc);
str_replace('Ś', '?', $Tresc);
str_replace('ś', '?', $Tresc);
str_replace('ó', 'ó', $Tresc);
str_replace('ć', 'ć', $Tresc);
str_replace('Ó', 'Ó', $Tresc);
str_replace('Ć', 'Ć', $Tresc);

//Znaki zagrażające zapytaniu
str_replace('"', '"', $Tresc);
str_replace('&', '&', $Tresc);
str_replace("'", ''', $Tresc);
str_replace('<', '<', $Tresc);
str_replace('>', '>', $Tresc);
str_replace('~', '?', $Tresc);
$uName = $uzytkownik['Name'];
$IP = $_SERVER["REMOTE_ADDR"];
$test = mysql_query("INSERT INTO support VALUES (NULL, '$Opis_p', '$Tresc', 0, '$uName', NOW(), '$IP', 1, 'Tak')");
if($test) {
?>
<script type="text/javascript">
alert("Zgłoszenie wysłano pomyślnie !");
</script>
<?php
}
}
?>

<div class="news"><br /><br /><br />
<div class="news_g">
</div>
<div class="news_s">

<h2>Witaj w supporcie <?php echo $uzytkownik['Name']; ?> !</h2><br>
<h3>Napisz zgłoszenie :</h3>
<form action="?write" method="POST">
<table border="0" align="center">
<tr><td>Tytuł zgłoszenia : <td><input type="text" name="title" style="width :300px" placeholder="Tytuł zgłoszenia">
<tr><td>Treść : <td><textarea name="tresc" style="width: 300px; max-width: 500px; height: 200px;"></textarea>
<tr><td colspan="2"><center><input type="submit" value="Napisz zgłoszenie"></center>
</table>
</form><br />
</div>
<div class="news_foot">
</div>
</div>

 

A oto jego zgłoszenia (historie) :

<?php
session_start();
require_once("Layout.php");

if(isset($_GET['odpisz']) && !empty($_GET['show'])) {
//Dobra. Konwersja znaków i finito ;p
$user = $db->Query("SELECT * FROM support WHERE Id=$show AND Swiat=1 ORDER BY Kiedy ASC");
$show = (int)$_GET['show'];

$Opis_p = addslashes($_REQUEST["odpisz"]);
//Polskie znaki 
str_replace('Ł', 'Ł', $Opis_p);
str_replace('ł', 'ł', $Opis_p);
str_replace('ź', '?', $Opis_p);
str_replace('Ź', '?', $Opis_p);
str_replace('Ż', 'Ż', $Opis_p);
str_replace('ż', 'ż', $Opis_p);
str_replace('Ą', 'Ą', $Opis_p);
str_replace('ą', 'ą', $Opis_p);
str_replace('ż', 'ż', $Opis_p);
str_replace('Ż', 'Ż', $Opis_p);
str_replace('Ę', 'Ę', $Opis_p);
str_replace('ę', 'ę', $Opis_p);
str_replace('Ń', 'Ń', $Opis_p);
str_replace('ń', 'ń', $Opis_p);
str_replace('Ś', '?', $Opis_p);
str_replace('ś', '?', $Opis_p);
str_replace('ó', 'ó', $Opis_p);
str_replace('ć', 'ć', $Opis_p);
str_replace('Ó', 'Ó', $Opis_p);
str_replace('Ć', 'Ć', $Opis_p);

//Znaki zagrażające zapytaniu
str_replace('"', '"', $Opis_p);
str_replace('&', '&', $Opis_p);
str_replace("'", ''', $Opis_p);
str_replace('<', '<', $Opis_p);
str_replace('>', '>', $Opis_p);
str_replace('~', '?', $Opis_p);

$title = $user['Title'];
$uName = $uzytkownik['Name'];
$IP = $_SERVER["REMOTE_ADDR"];
mysql_query("INSERT INTO support VALUES (NULL, '$title', '$Opis_p', $show, '$uName', NOW(), '$IP', 1, 'Tak')");
$_SESSION['user'] = $uzytkownik['Id'];

}
?>
<div class="news">
<br /><br /><br />
<div class="news_g">
</div>
<div class="news_s">
<?php
//Support ;p :
//Pobierzmy te wszystkie otwarte zgłoszenia ,w kolejnosci stare->nowe (no i ost. odp. ;])
if(!empty($_GET['show'])) {
//Wybrał zgłoszenie. Nie je pokaże i zrobi formularzyk ;]
$show = (int)$_GET['show'];
$user = $db->Query("SELECT * FROM support WHERE Id=$show AND Przez='".$uzytkownik['Name']."' AND Swiat=1 ORDER BY Kiedy ASC");

echo'<table border="0" align="center">
<tr><td><b>Napisał '.$user['Przez'].'<b><td style="text-align: right;">'.$user['Kiedy'].'
<tr><td colspan="2">'.$user['Tresc'];
$support_ID = $user['Id'];
//Pobierzmy wszystkie odp 
$answers = @mysql_query("SELECT * FROM support WHERE Odp_na=$show ORDER BY Kiedy ASC");
while($answer = @mysql_fetch_array($answers)) {
$_SESSION['user'] = $_SESSION['dupek'];
echo'
<tr><td colspan="2"><hr><b>Napisano :'.$answer['Kiedy'].' Przez : '.$answer['Przez'].'</b><br />'.$answer['Tresc'];
}
echo'
<hr>
<tr><td colspan="2"><b>Odpisz :</b><br />
<form action="?show='.$show.'&odpisz" method="POST">
<textarea name="odpisz" style="width:100%; height:200px;">
</textarea><br />
<input type="submit" value="Odpisz.">
</form>
</table>';

} else {
$questions = mysql_query("SELECT * FROM support WHERE Przez='".$uzytkownik['Name']."' AND Odp_na <1 AND Swiat=1 ORDER BY Kiedy ASC");
echo'
<h2>Twoje zgłoszenia :</h2>
<table border="1" align="center">
<tr><td>Tytuł :<td>Ostatnia odpowiedź :<td>Otwarty :';
while($quest = mysql_fetch_array($questions)) {
echo'<tr><td><a href="?show='.$quest['Id'].'"><b>'.$quest['Title'].'</b></a><td>'.$quest['Kiedy'].'<td>'.$quest['Otwarty'];
}
echo'</table>';
}
?>
</div>
<div class="news_foot">
</div>
</div>

 

 

W plikach pojawiają się str_repleace. Znając życie kokosz pewnie dalej tego nie naprawił no i pewnie bo niema jak ;) :/.

 

Link do repleaców :

www.worldofvillages.tk/repleace.txt

I co ważne

 

$uzytkownik['Name'] - login gracza.

$db->Query (czyt. mysql_fetch_array(mysql_query )

 

Created by Kongo. Dla MPC Forum. Kongo 2011-2012

Opublikowano

Ta... Ludzie chcą się uczyć na tutorialach, które w znacznej części opisują kodowanie ze zeszłego tysiąclecia to się później dziwimy, że jest wielu "Programistów PHP"..

PHP jest PROSTYM językiem, jednak, żeby coś WYDAJNEGO w nim pisać, trzeba trochę nad tym posiedzieć..

str_replace('Ł', 'Ł', $Opis_p);
str_replace('ł', 'ł', $Opis_p);
str_replace('ź', '?', $Opis_p);
str_replace('Ź', '?', $Opis_p);
str_replace('Ż', 'Ż', $Opis_p);
str_replace('ż', 'ż', $Opis_p);
str_replace('Ą', 'Ą', $Opis_p);
str_replace('ą', 'ą', $Opis_p);
str_replace('ż', 'ż', $Opis_p);
str_replace('Ż', 'Ż', $Opis_p);
str_replace('Ę', 'Ę', $Opis_p);
str_replace('ę', 'ę', $Opis_p);
str_replace('Ń', 'Ń', $Opis_p);
str_replace('ń', 'ń', $Opis_p);
str_replace('Ś', '?', $Opis_p);
str_replace('ś', '?', $Opis_p);
str_replace('ó', 'ó', $Opis_p);
str_replace('ć', 'ć', $Opis_p);
str_replace('Ó', 'Ó', $Opis_p);
str_replace('Ć', 'Ć', $Opis_p);

//Znaki zagrażające zapytaniu
str_replace('"', '"', $Opis_p);
str_replace('&', '&', $Opis_p);
str_replace("'", ''', $Opis_p);
str_replace('<', '<', $Opis_p);
str_replace('>', '>', $Opis_p);
str_replace('~', '?', $Opis_p);

Nie potrafisz chłopie zmienić kodowania w bazie albo wrzucić htmlspecialchars?

 

mysql_query

Przeczytaj choćby to -> http://webhosting.pl...t.sluszna.droga

$show = (int)$_GET['show'];

Kilka wersji apache wyrzuca błędy.. http://php.net/manua....is-numeric.php

 

Stosowanie XXX zmiennych jest nieoptymalne.. po jaką cholerę z $_POST robisz $costakiego ?

Niepotrzebnie męczysz interpreter..

Opublikowano

Może i nie potrzebnie ,ale w pisaniu zapytań pomaga.

 

Bez zmiany :

"SELECT * FROM s1 WHERE Id=".$_GET['village']

A z zmianą :

$vID = $_GET['village'];
mysql_query("SELECT * FROM s1 WHERE Id=$vID");

 

Co do konwersji to masz w sumie rację.

 

I nie z $_POST tylko z $_REQUEST jak już ;)

Opublikowano

"SELECT * FROM s1 WHERE Id=".$_GET['village']

$vID = $_GET['village'];
mysql_query("SELECT * FROM s1 WHERE Id=$vID");

<<<<<<<<<<<<<<<<<<<<<

$sth = $this->pdo -> prepare('SELECT * FROM s1 WHERE Id = :id');

$sth->bindParam(':id', $_GET['village'], PDO::PARAM_INT);

$sth->execute();

 

Nie byłbym taki pewien czy wygodniej podmieniać zmienną w biblioteczce mysql php.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...