Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2016-06-21 20:27:55

  ghost25 - Użytkownik

ghost25
Użytkownik
Zarejestrowany: 2015-04-13

Skrypty PHP pomóżcie znaleźć błąd

Mam dwa skrypty PHP. Pierwszy umieszcza parę plików na serwerze i modyfikuje index.html:

Kod:

<?php
$nazwa_gry = $_POST["nazwa"];
mkdir($nazwa_gry);
mkdir($nazwa_gry . "/assets/");
$target_dir = $nazwa_gry . "/assets/";

//tlo
$tlo = $target_dir . "tlo.jpg";
$uploadOk = 1;
$tlotype = pathinfo($tlo,PATHINFO_EXTENSION);
// Allow certain file formats
if($tlotype != "jpg") {
    echo "Tlo musi byc jpg! ";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 1) {
    if (move_uploaded_file($_FILES["tlo"]["tmp_name"], $tlo)) {
        echo "Plik ". basename( $_FILES["tlo"]["name"]). " zostal wgrany na serwer. ";
    } else {
        echo "Blad!";
    }
}
//tlo

//bird
$bird = $target_dir . "bird.png";
$uploadOk = 1;
$birdtype = pathinfo($bird,PATHINFO_EXTENSION);
// Allow certain file formats
if($birdtype != "png") {
    echo "Bird musi byc png! ";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 1) {
    if (move_uploaded_file($_FILES["bird"]["tmp_name"], $bird)) {
        echo "Plik ". basename( $_FILES["bird"]["name"]). " zostal wgrany na serwer. ";
    } else {
        echo "Blad! ";
    }
}
//bird

//pipe
$pipe = $target_dir . "pipe.png";
$uploadOk = 1;
$pipetype = pathinfo($pipe,PATHINFO_EXTENSION);
// Allow certain file formats
if($pipetype != "png") {
    echo "Przeszkoda musi byc png! ";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 1) {
    if (move_uploaded_file($_FILES["pipe"]["tmp_name"], $pipe)) {
        echo "Plik ". basename( $_FILES["pipe"]["name"]). " zostal wgrany na serwer. ";
    } else {
        echo "Blad! ";
    }
}
//pipe

//splash
$splash = $target_dir . "splash.png";
$uploadOk = 1;
$splashtype = pathinfo($splash,PATHINFO_EXTENSION);
// Allow certain file formats
if($splashtype != "png") {
    echo "Ekran powitalny musi byc png!";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 1) {
    if (move_uploaded_file($_FILES["splash"]["tmp_name"], $splash)) {
        echo "Plik ". basename( $_FILES["splash"]["name"]). " zostal wgrany na serwer. ";
    } else {
        echo "Blad! ";
    }
}
//splash

//icon
$icon = "./index_files/" . $nazwa_gry . ".png";
$uploadOk = 1;
$icontype = pathinfo($icon,PATHINFO_EXTENSION);
// Allow certain file formats
if($icontype != "png") {
    echo "Obraz wyswietlany na stronie glownej musi byc png! ";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 1) {
    if (move_uploaded_file($_FILES["icon"]["tmp_name"], $icon)) {
        echo "Plik ". basename( $_FILES["icon"]["name"]). " zostal wgrany na serwer. ";
    } else {
        echo "Blad! ";
    }
}
//icon

//kopiuj zrodla
$main = copy ("michal/main.js", $nazwa_gry . "/main.js");
$phaser = copy ("michal/phaser.min.js", $nazwa_gry . "/phaser.min.js");
if ($main == 1) {
    echo "Udalo sie skopiowac glowny kod gry z Vappy Michala! ";
}
else {
    echo "Nie udalo sie skopiowac glownego kodu gry z Vappy Michala! ";
}
if ($phaser == 1) {
    echo "Udalo sie skopiowac framework Phaser z Vappy Michala! ";
}
else {
    echo "Nie udalo sie skopiowac frameworka Phaser z Vappy Michala! ";
}

//zmien index michala
$source='michal/index.html';
$target=$nazwa_gry . "/index.html";

// copy operation
$sh=fopen($source, 'r');
$th=fopen($target, 'w');
while (!feof($sh)) {
    $line=fgets($sh);
    if (strpos($line, 'Vappy Michał')!==false) {
        $line="<title> " . $nazwa_gry . " </title>" . PHP_EOL;
    }
    fwrite($th, $line);
}

fclose($sh);
fclose($th);
//zmien zrodla michala
//kopiuj zrodla

//dodaj do strony glownej
$source='index.html';
$target='index.tmp';

// copy operation
$sh=fopen($source, 'r');
$th=fopen($target, 'w');
while (!feof($sh)) {
    $line=fgets($sh);
    if (strpos($line, "<! -- Tutaj dodawac nowe gry -- >")!==false) {
        $line="<div class=\"card\"><img src=\"" . $icon . "\"><h3>" . $nazwa_gry . "</h3><a href=\"" . $nazwa_gry . "/index.html" . "\">Zagraj<a> <br></div>" . PHP_EOL . "<! -- Tutaj dodawac nowe gry -- >" . PHP_EOL;
    }
    fwrite($th, $line);
}

fclose($sh);
fclose($th);

// delete old source file
unlink($source);
// rename target file to source file
rename($target, $source);
//dodaj do strony glownej

//ustaw haslo
$haslo = $_POST["haslo"];
$haslo_md5 = md5($haslo);
$plik_haslo_path = $nazwa_gry . "/haslo.txt";
$plik_haslo=fopen($plik_haslo_path, 'w');
fwrite($plik_haslo, $haslo_md5);
fclose($plik_haslo);
//ustaw haslo

echo "Jezeli wszystko poszlo dobrze to twoja gra jest juz na stronie glownej! ";
?>

A drugi ma odwrócić jego działanie, czyli usunąć pliki wgrane na serwer i linię dopisaną do index.html:

Kod:

<?php
//funkcja usuwania folderu
function removeDir($path) {
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if ($fileinfo->isFile() || $fileinfo->isLink()) {
unlink($fileinfo->getPathName());
} elseif (!$fileinfo->isDot() && $fileinfo->isDir()) {
removeDir($fileinfo->getPathName());
}
}
rmdir($path);
}
//funkcja usuwania folderu

$nazwa = $_POST["nazwa"];
$haslo = $_POST["haslo"];
$icon = "./index_files/" . $nazwa . ".png";
$haslo_md5 = md5($haslo);
$haslo_plik = fopen($nazwa . "/haslo.txt", "r");
$haslo_z_pliku = fgets($haslo_plik);
fclose($haslo_plik);
if($haslo_md5  == $haslo_z_pliku) {
        removeDir($nazwa);
        unlink($icon);
        
        
        $source='index.html';
        $target='index.tmp';

        // copy operation
        $sh=fopen($source, 'r');
        $th=fopen($target, 'w');
        while (!feof($sh)) {
            $line=fgets($sh);
            if (strpos($line, "<div class=\"card\"><img src=\"" . $icon . "\"><h3>" . $nazwa . "</h3><a href=\"" . $nazwa . "/index.html" . "\">Zagraj<a> <br></div>" . PHP_EOL . "<! -- Tutaj dodawac nowe gry -- >" . PHP_EOL)!==false) {
                $line="<! -- Tutaj dodawac nowe gry -- >";
            }
            fwrite($th, $line);
        }

        fclose($sh);
        fclose($th);

        // delete old source file
        unlink($source);
        // rename target file to source file
        rename($target, $source);
        
        
        echo "Twoja gra zostala usunieta!";
}
else {
        echo "Niepoprawna kombinacja nazwy i hasla!";
}
?>

Ale jak zwykle coś musi nie działać. Drugi skrypt usuwa prawidłowo pliki, ale już index.html nie chce zmodyfikować. Pewnie jak zwykle gdzieś jest jakiś banalny błąd, ale siedzę już kilka godzin i go nie widzę.


[url=http://userbars.name/][img]http://i.imgur.com/fyAZ9.gif[/img][/url]

Offline

 

#2  2016-06-21 22:24:22

  pasman - Użytkownik

pasman
Użytkownik
Zarejestrowany: 2015-12-16

Re: Skrypty PHP pomóżcie znaleźć błąd

modyfikowanie index.html nie jest dobrą praktyką.

poza tym czy ścieżki $source , $target są kompletne ?

Offline

 

#3  2016-06-22 16:51:58

  ghost25 - Użytkownik

ghost25
Użytkownik
Zarejestrowany: 2015-04-13

Re: Skrypty PHP pomóżcie znaleźć błąd

$source i $target są kompletne, skrypty są w tym samym folderze co index.html


[url=http://userbars.name/][img]http://i.imgur.com/fyAZ9.gif[/img][/url]

Offline

 

#4  2016-06-22 20:05:31

  Piotr3ks - Też człowiek :-)

Piotr3ks
Też człowiek :-)
Skąd: Białystok
Zarejestrowany: 2007-06-24

Re: Skrypty PHP pomóżcie znaleźć błąd

Może uprawnienia do pliku nie pozwalają?

Offline

 

#5  2016-06-23 15:03:33

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Skrypty PHP pomóżcie znaleźć błąd

Może by tak włączyć raportowanie błędów w skrypcie i nie zgadywać. Sam powie co go boli.
W razie czego http://stackoverflow.com/questions/1053424/how-do-i-get-php-errors-to-display

Offline

 

#6  2016-06-23 17:21:27

  ghost25 - Użytkownik

ghost25
Użytkownik
Zarejestrowany: 2015-04-13

Re: Skrypty PHP pomóżcie znaleźć błąd

Piotr3ks, uprawnienia do index.html są prawidłowe, bo pierwszy skrypt działa dobrze. kazmikaze, dopisałem

Kod:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

i nie informuje o żadnych błędach.


[url=http://userbars.name/][img]http://i.imgur.com/fyAZ9.gif[/img][/url]

Offline

 

#7  2016-06-23 19:49:40

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Skrypty PHP pomóżcie znaleźć błąd

No to działa, tylko pewnie jest jakiś błąd w logice. To teraz trzeba pomyśleć przejść po kolei i zobaczyć co się dzieje. Idealnie jakbyś miał jakiś debugger. Ale jak nie ma to możesz umieszczać echo "tekst" by wiedzieć czy wchodzi gdzie trzeba. Np. czy wchodzi w twój if, który sprawdza czy ciąg się znajduje w linii. Ważna uwaga, jeśli strpos zwróci 0, co prawdopodobne to jest to false i nie wejdzie do if-a.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.012 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00012 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00157 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='54.196.27.171' WHERE u.id=1
0.00227 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '54.196.27.171', 1711653941)
0.00075 SELECT * FROM punbb_online WHERE logged<1711653641
0.00065 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28723 AND t.moved_to IS NULL
0.00004 SELECT search_for, replace_with FROM punbb_censoring
0.00222 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28723 ORDER BY p.id LIMIT 0,25
0.00139 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28723
Total query time: 0.00906 s