Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Optymalizacja kodu
Forum PHP.pl > Forum > Przedszkole
Exodus
Witam wszystkich. Prosiłbym was, aby dobĽi programisci ocenili ten kod i zoptymalizowali piszac, co i dlczego. Serdecznie dziekuje:
CODE

<?
ob_start();

session_start();

define('INSIDE', true);

include 'includes/header.php';

$smarty = new Smarty;

$smarty->compile_check = true;
$smarty->debugging = false;

include 'includes/function.php';


switch($a){

case "comment":
if($_SESSION['zalogowany'] != 1){
message('Nie jeste¶ zalogowany.');
header("Refresh:3;video.php?video=$_GET[video]");
}
if(strlen($_POST['text']) > $max_comment){
message('Opis posiada za dużo znaków');
header("Refresh:3;video.php?video=$_GET[video]");
}elseif(ereg('[^a-zA-Z0-9:winksmiley.jpg (*!? ¶¶ń󿼳±ęć¦ŃÓŻ¬ŁˇĘĆ .]', $_POST['text'])){
message('Komentarz posiada niedozwolone znaki.');
header("Refresh:3;video.php?video=$_GET[video]");
}elseif(!$_POST['text']){
message('Musisz uzupełnić wszystkie pola');
header("Refresh:3;video.php?video=$_GET[video]");
}else{

$add = "INSERT INTO comments (text, add_by, add_date, v_id) VALUES ('$_POST[text]', '$_SESSION[login]', '$date', '$_GET[video]')";

$go = $db->query($add);

message('Komentarz dodany.');

header("Refresh:3;video.php?video=$_GET[video]");
}

break;


case "bad":

$select = "SELECT * FROM bad_video WHERE v_id = '$_GET[id]'";

$go_select = $db->query($select);

$wynik = $db->num($go_select);

if($_SESSION['zalogowany'] != 1){

message('Nie jeste¶ zalogowany.');

}elseif($wynik != 0){

message('Kto¶ już zgłosił ten film.');

}else{

$update = "INSERT INTO bad_video (v_id, add_by, add_time) VALUES ('$_GET[id]', '$_SESSION[login]', '$date')";

$goupdate = $db->query($update);

message('Dziękujemy za zgłoszenie filmu.');

header("Refresh:3;video.php?video=$_GET[id]");
}


break;

case "vote":

$s = $_GET['video'];

$v = $_POST['vote'];

if($v > 10){
$v = '10';
}

if($_COOKIE[vote][$s] == $s){

message('Głosowałe¶ już na ten film.');

header("Refresh:3;video.php?video=$s");

}else{

$vote="UPDATE video SET points=points+$v, glosowalo=glosowalo+1 WHERE id='$s'";

$query = $db->query($vote);

$wygasniecie = time() + (60 * 60 * 24);
setCookie ("vote[$s]", "".$s."",$wygasniecie);

message('Dziękujemy za głos.');

header("Refresh:3;video.php?video=$s");
}



break;


default:

$select = "SELECT * FROM video WHERE id = '$_GET[video]'";

$goselect = $db->query($select);

$wynik = $db->num($goselect);

if($wynik == 0){

message('Film o podanym ID nie istnieje.');

}else{


while($video = $db->fetch($goselect)){

if($video['points'] == 0){
$points = 0;
}else{
$points = $video['points']/$video['glosowalo'];
}

$smarty->assign(array(
"v_id" => $video['id'],
"v_name" => $video['name'],
"v_category" => $video['category'],
"v_date" => $video['add_date'],
"v_description" => $video['description'],
"v_add_by" => $video['add_by'],
"v_points" => $points,
"v_tags" => $video['tags'],
"v_home_site" => $video['home_site'],
"v_img" => $video['img'],
"v_looked" => $video['looked'],
"v_video" => $video['video']));

}//while


// komentarze
if (!$_GET['limit']) $_GET['limit'] = 0;

$comments = "SELECT * FROM comments WHERE v_id = '$_GET[video]' ORDER BY add_date DESC LIMIT $_GET[limit],$max_on_video";

$go = $db->query($comments);

$comm = $db->num($go);

if($comm == 0){
$smarty->assign("comment", 'Nikt jeszcze nie skomentował tego filmu');
}

$i = 0;
while($comment= $db->fetch($go)){

$com_name[$i] = $comment['name'];
$com_date[$i] = $comment['add_date'];
$com_by[$i] = $comment['add_by'];
$com_text[$i] = $comment['text'];

$i++;
}

$smarty->assign(array(
"com_name" => $com_name,
"com_date" => $com_date,
"com_text" => $com_text,
"com_by" => $com_by));

$com = mysql_num_rows(mysql_query("SELECT id FROM comments WHERE v_id = '$_GET[video]'"));

if ($com > $max_on_video && ($_GET['limit']+$max_on_video) < $com)
$smarty -> assign("dalej", "<a href=video.php?video=".$_GET['video']."&limit=".($_GET['limit']+$max_on_video).">Następne ".$max_on_video." komentarzy</a>");
if ($_GET['limit'] >= $max_on_video)
$smarty -> assign("wstecz", "<a href=video.php?video=".$_GET['video']."&limit=".($_GET['limit']-$max_on_video).">Poprzednie ".$max_on_video." komentarzy</a>");



//Dodaje wy¶wietlenie

$update = "UPDATE video SET looked=looked+1 WHERE id = '$_GET[video]'";

$goupdate = $db->query($update);


}
break;

}

$smarty->assign(array('a' => $_GET['a'],
'video' => $_GET['video']
));

$smarty->display("video.tpl");

include "includes/footer.php";
?>
drPayton
1. Zmień bbcode na php i zrób wcięcia, będzie łatwiej czytać i będzie można poogl±dać
2. Jedna rzecz już na pocz±tek. Problem rzadko spotykany, ale niektórzy maj± ma tak ustawione w przegl±darce, że ręcznie startować trzeba sesje. Specjalnie dla nich (a dla pozostałych to różnicy nie zrobi):
zamiast:
  1. <?php
  2. ?>

daj:
  1. <?php
  2. if(!is_array($_SESSION)) {
  3. }
  4. ?>

3. I druga:
Ze względu na sposób porównywania warto¶ci przez php, zamiast
  1. <?php
  2. if($zmienna == 'wartosc')
  3. ?>

lepiej robić
  1. <?php
  2. if('wartosc' == $zmienna)
  3. ?>

Szerszych wyja¶nień poszukaj na googlach
MalCom
2. Nie bardzo rozumiem co ma przegladarka do startowania sesji. Plik z danymi sesji sam sie nie utworzy na serwerze ;p
3. Moze jakies zrodla or potwierdzenia, bo nie moge nic wartosciowego znalezc na google, a grzebac w zrodlach php mi sie nie usmiecha ;p
drPayton
2. Boże widzisz i nie grzmisz jak ja takie głupoty piszę blinksmiley.gif
session.auto-start i raportowanie błędów przy E_ALL, a ściślej. Domyślnie session.auto-start w php.ini jest ustawione na 0 (wyłączone) i tak ma większość. Jednak na niektórych serwerach jest to włączone i wówczas session_start spowoduje dodanie zbędnego wpisu w logu i ew przy E_ALL wyrzuci warning na ekran. Jak optymalizacja, to optymalizacja winksmiley.jpg

3. Pojedyncze = zamiast == jest bardzo popularnym i trudnym do wychwycenia błędem, niezależenie od doświadczenia. Ta metoda pozwala takich błędów uniknąć:
  1. <?php
  2. $zmienna = 1;
  3. if($zmienna = 4) {
  4. echo "yep";
  5. } else {
  6. echo "no";
  7. }
  8. // wynik: yep
  9. ?>

  1. <?php
  2. $zmienna = 1;
  3. if(= $zmienna) {
  4. echo "yep";
  5. } else {
  6. echo "no";
  7. }
  8. // wynik: Parse error: syntax error, unexpected '=' in FILE on line LINE
  9. ?>


@Exodus: popraw kod na php!
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.