Hej!
Odnosze się do tego tematu: http://www.webinside.pl/forum/viewtopic.php?t=5586
No zrobiłem w 1/4 mój system newsow beta 0,1.
Zobaczcie czy to jest dobrze zrobione:
Baza:
Kod:
[sql]CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`tytul` varchar(32) NOT NULL default '',
`tresc` text NOT NULL,
`autor` varchar(16) NOT NULL default '',
PRIMARY KEY (`id`)
);[/sql]
Kod newsa:
Kod:
[php]<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<meta http-equiv="reply-to" content="[email protected]" />
<meta name="author" content="Mateusz (Pride) K." />
<title>News</title>
</head>
<body>
<?php
//Konfiguracja START
$host = 'localhost';
$baza = 'nauka';
$user = 'root';
$pass = 'krasnal';
//Konfiguracja KONIEC
//Baza Danych START
if(!mysql_connect($host, $user, $pass)) die('Nie można poł±czyć się z baz±.');
if(!mysql_select_db($baza)) die('Nie można wybrać bazy.');
//Baza Danych KONIEC
//Dodawanie News'a START
if($_GET['module'] == 'dodaj')
{
if(!isset($_POST['submit']))
{
echo '<h3>Dodawanie News`a</h3>';
echo '<form action="index.php?module=dodaj" method="post">';
echo 'Tytuł: <br /><input type="text" name="tytul" maxleght="32" size="12"><br /><br />';
echo 'Tre¶ć: <br /><textarea name="tresc" rows="12" cols="50"></textarea><br /><br />';
echo 'Autor: <br /><input type="text" name="autor" maxleght="16" size="12"><br /><br />';
echo '<div align="center"><input type="submit" name="submit" value="Wy¶lij"></div>';
echo '</form>';
}
else
{
$sql = "INSERT INTO news (id, tytul, tresc, autor) VALUES ('', '$tytul', '$tresc', '$autor');";
$wykonaj = mysql_query($sql);
if($wykonaj)
{
echo 'News został dodany.';
echo '<h2>' . $_POST['tytul'] .'</h2><p>' . $_POST['tresc'] .'</p><b>' . $_POST['autor'] .'</b><br /><br />';
echo '<a href="index.php">Powrót do Strony Głównej.</a>';
}
else
{
echo 'News <b>NIE</b> został dodany.';
}
}
exit();
}
//Dodawanie News'a KONIEC
//Wy¶wietlanie News'ow START
else
{
echo '<h3>News`y</h3>';
$sql = "SELECT * FROM news ORDER BY id DESC LIMIT 0,10;";
$wykonaj = mysql_query($sql);
while($wyswietl = mysql_fetch_array($wykonaj))
{
$id = $wyswietl[0];
$tytul = $wyswietl[1];
$tresc = $wyswietl[2];
$autor = $wyswietl[3];
echo '<br /><h2>' . $tytul . '</h2><p>' . $tresc . '</p><b>' . $autor . '</b>';
}
echo '<br /><br /><a href="index.php?module=dodaj">Dodaj News`a</a>';
}
//Wy¶wietlanie News'ow KONIEC
?>
</body>
</html>[/php]
Co sądzicie o bezpieczeństwie?
Co dodać (przy moich umiejetnosciach) do bety 0,2?
Jakieś uwagi, pochwały?
Z góry dzięki!
Pride
System News`ów
Re: System News`ów
1. Sprawdzaj poprawność wprowadzanych danych.
2. Enkoduj znaki <>&" i inne (przy wkładaniu do bazy i przy wypisywaniu na stronę).
3. Może jakaś data dodania?
4. Edycja...
5. Bezpieczeństwo? Przecież nie ma nawet autoryzacji...
2. Enkoduj znaki <>&" i inne (przy wkładaniu do bazy i przy wypisywaniu na stronę).
3. Może jakaś data dodania?
4. Edycja...
5. Bezpieczeństwo? Przecież nie ma nawet autoryzacji...
Re: System News`ów
Edycja, usówanie... interpretacja BBcode (usówanie html z postów...), uśmieszki... style pisania... innymi słowy: narzędzia redagowania 
Re: System News`ów
viraptor pisze:5. Bezpieczeństwo? Przecież nie ma nawet autoryzacji...
Re: System News`ów
nom to zależy co chcesz osiągnąć... czy wyłącznie system authoryzacji, czy auth + flagi... ale ogólnie zasada jest takasama...
w kazdym skrypcie objętym przez sys logowania rozpoczynasz sesyję.
potem na zasadzie porównania danych (if then else) wpisanych przez usera i tych w bazie sprawdzasz czy jest sprecyzowanym uzytkownikiem (czy istnieje w bazie). jezeli user wpisal poprawne dane ustawiasz zmienną sesyjną $_session['logged']=1 przy czym nazwa moze byc jakakolwiek, wazny jest przedrostek $_session. Później sprawdzasz czy zmienna logged ma wartosc 1 i jezeli tak - wykonjujesz odpowiednie funkcje... jezeli nie... no to przykro mi ale się nie zalogowałeś....
możesz to rozpatrzyć na tym przykładzie (rozpatrujemy takze flagi uzytkowników...):
[php]<?php
/* Login and Password veryfication by Vic */
if ($_GET['action']=='login') {
$plik=fopen("data/dzialy/users/users.src","r");
$zrodlo=fread($plik,filesize("data/dzialy/users/users.src"));
fclose($plik);
// rozbicie zrodla na wiersze danych
$src=str_replace("\n",'',$zrodlo);
$src=explode(":><:",$src);
# odpowiednie instrukcje dla każdego wiersza danych
foreach($src as $wiersz => $wpis) {
$dane=explode(":||:",$src[$wiersz]);
if ($dane[0]==$_POST['login'] && $dane[1]==$_POST['password']) {
$_SESSION['nick']=$dane[0];
$_SESSION['password']=$dane[1];
$_SESSION['tablica']=$dane[2];
$_SESSION['download']=$dane[3];
$_SESSION['NCS']=$dane[4];
$_SESSION['Madm']=$dane[5];
$_SESSION['ArrayEdit']=$dane[6];
$_SESSION['GBook']=$dane[7];
$_SESSION['FTP']=$dane[8];
$_SESSION['Users']=$dane[9];
$_SESSION['logged']=1;
header("Location: index.php");
}
$flog="<b class=\"flog\">wpisałeś niepoprawne dane</b><br>";
};
}
elseif ($_GET['action']=='exit') {
session_unset();
session_destroy();
header("Location: index.php");
};
//koniec loginsys veryfication
?>[/php]
Przykład porównania zmiennych i odpowiednich akcji..
[php]<?php
/* Login sys */
if ($_SESSION['logged']==1) {
if ($_SESSION['tablica']==1) {$tablica="<a href=\"index.php?page=tablica&action=show\" class=\"ruser\">tablica</a><br>";} else {$tablica="";};
if ($_SESSION['download']==1) {$download="<a href=\"\" class=\"ruser\">download</a><br>";} else {$download="";};
if ($_SESSION['NCS']==1) {$NCS="<a href=\"index.php?page=NCSadmin\" class=\"luser\">NCS</a><br>";} else {$NCS="";};
if ($_SESSION['Madm']==1) {$Madm="<a href=\"index.php?page=mecze&action=show\" class=\"luser\">Madm</a><br>";} else {$Madm="";};
if ($_SESSION['ArrayEdit']==1) {$ArrayEdit="<a href=\"index.php?page=tablica&action=show\" class=\"luser\">ArrayEdit</a><br>";} else {$ArrayEdit="";};
if ($_SESSION['GBook']==1) {$GBook="<a href=\"index.php?page=ksiega&action=show\" class=\"luser\">GBook</a><br>";} else {$GBook="";};
if ($_SESSION['FTP']==1) {$FTP="<a href=\"\" class=\"luser\">FTP</a><br>";} else {$FTP="";};
if ($_SESSION['Users']==1) {$Users="<a href=\"\" class=\"luser\">Users</a><br>";} else {$Users="";};
echo "<p class=\"admpanel\"><b style=\"font: bold 10px Verdana; color: #684747\">".$_SESSION['nick']."</b>s options:</p>
<div class=\"user\" align=\"right\">
".$tablica.$download."
</div>
<div class=\"user\" align=\"left\">
".$NCS.$Madm.$ArrayEdit.$GBook.$FTP.$Users."
</div>
<center>
<a href=\"index.php?action=exit\">wyloguj</a>
</center>";
?>[/php]
u mnie działa...
w kazdym skrypcie objętym przez sys logowania rozpoczynasz sesyję.
potem na zasadzie porównania danych (if then else) wpisanych przez usera i tych w bazie sprawdzasz czy jest sprecyzowanym uzytkownikiem (czy istnieje w bazie). jezeli user wpisal poprawne dane ustawiasz zmienną sesyjną $_session['logged']=1 przy czym nazwa moze byc jakakolwiek, wazny jest przedrostek $_session. Później sprawdzasz czy zmienna logged ma wartosc 1 i jezeli tak - wykonjujesz odpowiednie funkcje... jezeli nie... no to przykro mi ale się nie zalogowałeś....
możesz to rozpatrzyć na tym przykładzie (rozpatrujemy takze flagi uzytkowników...):
[php]<?php
/* Login and Password veryfication by Vic */
if ($_GET['action']=='login') {
$plik=fopen("data/dzialy/users/users.src","r");
$zrodlo=fread($plik,filesize("data/dzialy/users/users.src"));
fclose($plik);
// rozbicie zrodla na wiersze danych
$src=str_replace("\n",'',$zrodlo);
$src=explode(":><:",$src);
# odpowiednie instrukcje dla każdego wiersza danych
foreach($src as $wiersz => $wpis) {
$dane=explode(":||:",$src[$wiersz]);
if ($dane[0]==$_POST['login'] && $dane[1]==$_POST['password']) {
$_SESSION['nick']=$dane[0];
$_SESSION['password']=$dane[1];
$_SESSION['tablica']=$dane[2];
$_SESSION['download']=$dane[3];
$_SESSION['NCS']=$dane[4];
$_SESSION['Madm']=$dane[5];
$_SESSION['ArrayEdit']=$dane[6];
$_SESSION['GBook']=$dane[7];
$_SESSION['FTP']=$dane[8];
$_SESSION['Users']=$dane[9];
$_SESSION['logged']=1;
header("Location: index.php");
}
$flog="<b class=\"flog\">wpisałeś niepoprawne dane</b><br>";
};
}
elseif ($_GET['action']=='exit') {
session_unset();
session_destroy();
header("Location: index.php");
};
//koniec loginsys veryfication
?>[/php]
Przykład porównania zmiennych i odpowiednich akcji..
[php]<?php
/* Login sys */
if ($_SESSION['logged']==1) {
if ($_SESSION['tablica']==1) {$tablica="<a href=\"index.php?page=tablica&action=show\" class=\"ruser\">tablica</a><br>";} else {$tablica="";};
if ($_SESSION['download']==1) {$download="<a href=\"\" class=\"ruser\">download</a><br>";} else {$download="";};
if ($_SESSION['NCS']==1) {$NCS="<a href=\"index.php?page=NCSadmin\" class=\"luser\">NCS</a><br>";} else {$NCS="";};
if ($_SESSION['Madm']==1) {$Madm="<a href=\"index.php?page=mecze&action=show\" class=\"luser\">Madm</a><br>";} else {$Madm="";};
if ($_SESSION['ArrayEdit']==1) {$ArrayEdit="<a href=\"index.php?page=tablica&action=show\" class=\"luser\">ArrayEdit</a><br>";} else {$ArrayEdit="";};
if ($_SESSION['GBook']==1) {$GBook="<a href=\"index.php?page=ksiega&action=show\" class=\"luser\">GBook</a><br>";} else {$GBook="";};
if ($_SESSION['FTP']==1) {$FTP="<a href=\"\" class=\"luser\">FTP</a><br>";} else {$FTP="";};
if ($_SESSION['Users']==1) {$Users="<a href=\"\" class=\"luser\">Users</a><br>";} else {$Users="";};
echo "<p class=\"admpanel\"><b style=\"font: bold 10px Verdana; color: #684747\">".$_SESSION['nick']."</b>s options:</p>
<div class=\"user\" align=\"right\">
".$tablica.$download."
</div>
<div class=\"user\" align=\"left\">
".$NCS.$Madm.$ArrayEdit.$GBook.$FTP.$Users."
</div>
<center>
<a href=\"index.php?action=exit\">wyloguj</a>
</center>";
?>[/php]
u mnie działa...
Re: System News`ów
1] Narazie chce zrobic to edytoweanie + usuwanie
Bo cos mi to nie idzie (jak mowilem - poczatkujacy jestem) Ale postaram sie to zrobic SAM :] I logowanie tez 

