W panelu administracyjnym robie edytowanie wpisow w bazie danych MySQL. Obawiam sie, ze niestety momentami nie jest to do konca dobrze rozwiazane wiec zalaczam kod fragmentu do edycji:
[php:1:4d48f993af]<?php
function EdytujWpis()
{
?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<link rel="stylesheet" href="../../css/style.css" type="text/css">
<title>Panel administracyjny</title>
</head>
<body style="background-image: none; background-color: #222; margin: 5px;">
<?
switch ($_GET['Edytuj'])
{
case 0: Edytowanie(); break;
case 1: PotwierdzenieEdytowania(); break;
case 2: NadpisanieDanych(); break;
default: Header('Location: panel.php?Akcja=0'); break;
}
?>
</body>
</html>
<?
}
function Edytowanie() // Wyswietla formularz do edytowania wpisu
{
global $SQLHost,$SQLUser,$SQLPass,$SQLDBName;
@mysql_connect($SQLHost,$SQLUser,$SQLPass);
mysql_select_db($SQLDBName);
$SQLQuery = mysql_query('select * from kopia where Nr='.$_GET['Nr'].'');
$SQLRekord = mysql_fetch_array($SQLQuery);
?>
<table width="780" border="0" cellspacing="0" cellpadding="0">
<form method="get">
<?
print '
<tr>
<td width="160" class="panel" id="bright">Nr strony:</td>
<td class="panel" id="bright">'.$SQLRekord['Nr'].'</td>
</tr>
<tr>
<td width="160" class="panel" id="bright">Tytuł strony:</td>
<td class="panel" id="bright"><input class="login" id="edit" type="text" name="Tytul" value="'.$SQLRekord['Tytul'].'"></td>
</tr>
<tr>
<td width="160" class="panel" id="bright">Data:</td>
<td class="panel" id="bright"><input class="login" id="edit" type="text" name="Data" value="'.$SQLRekord['Data'].'"></td>
</tr>
<tr>
<td width="160" class="panel" id="bright">Poziom:</td>
<td class="panel" id="bright"><input class="login" id="edit" type="text" name="Poziom" value="'.$SQLRekord['Poziom'].'"></td>
</tr>
<tr>
<td width="160" class="panel" id="bright">Strona nadrzędna:</td>
<td class="panel" id="bright"><input class="login" id="edit" type="text" name="Nadrzedna" value="'.$SQLRekord['Nadrzedna'].'"></td>
</tr>
<tr>
<td width="160" valign="top" class="panel" id="bright" style="padding-top: 8px;">Zawartość (treść):</td>
<td class="panel" id="bright"><textarea name="Zawartosc" cols="100" rows="26" style="border: #222 1px solid; font-family: verdana, sans-serif; color: #222; font-size: 11px; text-decoration: none;">'.$SQLRekord['Zawartosc'].'</textarea></td>
</tr>
<tr>
<td colspan="2" height="50" align="center" valign="bottom" class="panel" id="bright">
<input type="hidden" name="Akcja" value="2">
<input type="hidden" name="Nr" value="'.$SQLRekord['Nr'].'">
<input type="hidden" name="Edytuj" value="1">
<input type="submit" value="Zapisz zmiany">';
?>
<input type="button" value="Powrót do spisu" onClick="document.location.href='panel.php?Akcja=0'">
</td>
</tr>
</form>
</table>
<?
}
function PotwierdzenieEdytowania()
{
global $SQLHost,$SQLUser,$SQLPass,$SQLDBName;
@mysql_connect($SQLHost,$SQLUser,$SQLPass);
mysql_select_db($SQLDBName);
$SQLQuery = mysql_query('select * from kopia where Nr='.$_GET['Nr'].'');
$SQLRekord = mysql_fetch_array($SQLQuery);
print '<p align="center" class="normal" id="bright">Na pewno nadpisać wpis nr '.$_GET['Nr'].'?<br><span class="small" id="bright">(Tytuł: '.$SQLRekord['Tytul'].')</span></p>';
print '<p align="center" class="normal" id="bright"><a class="normal" id="bright" href="panel.php?Akcja=2&Edytuj=2&Nr='.$_GET['Nr'].'&Tytul='.$_GET['Tytul'].'&Data='.$_GET['Data'].'&Poziom='.$_GET['Poziom'].'&Nadrzedna='.$_GET['Nadrzedna'].'&Zawartosc='.$_GET['Zawartosc'].'"><b>TAK</b></a> | <a class="normal" id="bright" href="panel.php?Akcja=0"><b>NIE</b></a>';
}
function NadpisanieDanych()
{
global $SQLHost,$SQLUser,$SQLPass,$SQLDBName;
@mysql_connect($SQLHost,$SQLUser,$SQLPass);
mysql_select_db($SQLDBName);
$SQLQuery = mysql_query('select * from kopia where Nr='.$_GET['Nr'].'');
$SQLRekord = mysql_fetch_array($SQLQuery);
if ($_GET['Tytul'] != $SQLRekord['Tytul'])
{
mysql_query('update kopia set Tytul="'.$_GET['Tytul'].'" where Nr='.$SQLRekord['Nr'].'');
}
Standard();
}
?>[/php:1:4d48f993af]
Teraz wyjasnienia:
Standard() - funkcja, ktora laduje sie gdy Akcja == 0 i wyswietla po prostu wszystkie wpisy z bazy zeby mozna bylo wybrac, ktory edytowac, usunac itp.
I pytanie:
1. Nie wiem czy przekazywanie zawartosci <textarea> przez GET jest bezpieczne - nie wiem czy przy wiekszych rozmiarach tekstu mi cos nie zginie? Zdaje sobie sprawe, ze jest to troche amatorskie rozwiazanie, ale nie przyszlo mi nic innego do glowy jak moglbym pobierac potwierdzenie od uzytkownika i zeby w miedzyczasie mi nie zginela zawartosc formularza

2. Jak moge usprawnic edytowanie tych pol, ktore byly zmienione? W kodzie uwzglednilem jedynie Tytul, ale normalnie wszystkie pola musza byc sprawdzone i jesli wystapily zmiany to trzeba je nadpisac w bazie. Troche malo wygodne z punktu widzenia objetosci kodu jest pisanie tej instrukcji warunkowej dla kazdego pola z osobna...
3. Czy ta linia: default: Header('Location: panel.php?Akcja=0'); break; jest poprawna z punktu widzenia poprawnosci skladni php? Konkretnie chodzi mi o to czy tak moge uzywac funkcji Header?