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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Mam dwa skrypty PHP. Pierwszy umieszcza parę plików na serwerze i modyfikuje index.html:
<?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:
<?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ę.
Offline
modyfikowanie index.html nie jest dobrą praktyką.
poza tym czy ścieżki $source , $target są kompletne ?
Offline
$source i $target są kompletne, skrypty są w tym samym folderze co index.html
Offline
Może uprawnienia do pliku nie pozwalają?
Offline
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
Piotr3ks, uprawnienia do index.html są prawidłowe, bo pierwszy skrypt działa dobrze. kazmikaze, dopisałem
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
i nie informuje o żadnych błędach.
Offline
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
Time (s) | Query |
---|---|
0.00011 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00100 | 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='18.221.59.121' WHERE u.id=1 |
0.00107 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.221.59.121', 1732747785) |
0.00052 | SELECT * FROM punbb_online WHERE logged<1732747485 |
0.00080 | SELECT topic_id FROM punbb_posts WHERE id=302694 |
0.00004 | SELECT id FROM punbb_posts WHERE topic_id=28723 ORDER BY posted |
0.00076 | 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.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00157 | 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.00079 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28723 |
Total query time: 0.00676 s |