Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: Zapis do pliku
Forum PHP.pl > Forum > PHP
michu9010
witam mam taki problem z zapisem danych do pliku. Skrypt dzia³a poprawnie na serwerze z Win7/8 a na serwerach typu unix nie zapisuje tresci w pliku i czym jest to spowodowane CHMOD ustawione dla bezpieczeñstwa 777 a to kod skryptu:
  1. <?php
  2.  
  3.  
  4. include './header.php';
  5.  
  6. echo '<h2>Instalacja</h2><p>';
  7. switch($_GET['step']){
  8. default:
  9. f1();
  10. break;
  11.  
  12. case "2":
  13. f2();
  14. break;
  15.  
  16. case "3":
  17. f3();
  18. break;
  19.  
  20. case "4":
  21. f4();
  22. break;
  23. }
  24. //funkcje instalacji
  25. function f1(){
  26. echo "Krok 1. Sprawdzanie danych.<br>";
  27. //sprawdza wersje php jesli bedzie niższa od 5 nie przejdzie do nastepnego kroku
  28. echo "PHP";
  29. if (PHP_VERSION > 5) {
  30. echo " OK. Twoja wersja to ";
  31. echo PHP_VERSION;
  32.  
  33. } else echo "Zbyt niska wersja PHP!";
  34.  
  35. if(file_exists('db.php')) {
  36. if(is_writable('db.php')) {
  37. $chmod = "<b>OK</b> - Plik istnieje i jest zapisywalny";
  38. }
  39. }
  40. else {
  41. $chmod = "<b>UWAGA</b> - Plik nie jest zapisywalny lub nie istnieje";
  42. }
  43. echo '<br><a href="install.php?step=2">>></a>';
  44. }
  45.  
  46. function f2() {
  47. echo "Krok 2. Wpisz dane serwera.";
  48. if(empty($_POST)){
  49. echo '<form method="post" action="install.php?step=2">
  50. <p>
  51. Adres serwera:<br>
  52. <input type="text" value="" name="dbhost">
  53. </p>
  54. <p>
  55. Użytkownik bazy:<br>
  56. <input type="text" value="" name="dbuser">
  57. </p>
  58. <p>
  59. Hasło bazy:<br>
  60. <input type="password" value="" name="dbpass">
  61. </p>
  62. <p>
  63. Nazwa bazy:<br>
  64. <input type="text" value="" name="dbname">
  65. </p>
  66. <p>
  67. <input type="submit" value="Sprawdź">
  68. </p>
  69. </form>';
  70. } else echo "<br>Zapis danych powiódł się. Możesz kontynuować. <a href='install.php?step=3'>>></a>";
  71. function clear($text) {
  72. // jeśli serwer automatycznie dodaje slashe to je usuwamy
  73. $text = stripslashes($text);
  74. }
  75. $text = trim($text); // usuwamy białe znaki na początku i na końcu
  76. $text = mysql_real_escape_string($text); // filtrujemy tekst aby zabezpieczyć się przed sql injection
  77. $text = htmlspecialchars($text); // dezaktywujemy kod html
  78. return $text;
  79. }
  80. if(isset($_POST['dbhost'])) {
  81.  
  82. file_put_contents('db.php', '');
  83. // zmienna $dane, która będzie zapisana
  84. // może także pochodzić z formularza np. $dane = $_POST['dane'];
  85. $_POST['dbhost'] = clear($_POST['dbhost']);
  86. $_POST['dbuser'] = clear($_POST['dbuser']);
  87. $_POST['dbpass'] = clear($_POST['dbpass']);
  88. $_POST['dbname'] = clear($_POST['dbname']);
  89. if(empty($_POST['dbhost']) || empty($_POST['dbuser']) || empty($_POST['dbpass']) || empty($_POST['dbname']))
  90. { echo "<p>Uzupełnij wszystkie pola!</p>";
  91. header("Location: install.php?step=2");
  92. }
  93. //zapis danych z formularza
  94. $dane = "<?php
  95. define('DBHOST', '".$_POST['dbhost']."');
  96. define('DBUSER', '".$_POST['dbuser']."');
  97. define('DBPASS', '".$_POST['dbpass']."');
  98. define('DBNAME', '".$_POST['dbname']."');
  99. ?>";
  100.  
  101.  
  102. // przypisanie zmniennej $file nazwy pliku
  103. $file = "db.php";
  104.  
  105. // uchwyt pliku, otwarcie do dopisania
  106. $fp = fopen($file, "a");
  107.  
  108. // blokada pliku do zapisu
  109. flock($fp, 2);
  110.  
  111. // zapisanie danych do pliku
  112. fwrite($fp, $dane);
  113.  
  114. // odblokowanie pliku
  115. flock($fp, 3);
  116.  
  117. // zamknięcie pliku
  118. fclose($fp);
  119. }
  120. }
  121.  
  122.  
  123.  
  124.  
  125. //instaluje schemat bazy danych
  126. function f3() {
  127. echo 'Krok 3. Instalacja schematu bazy danych.';
  128. include ("config.php");
  129. db_connect();
  130. $result1 = mysql_query("CREATE TABLE IF NOT EXISTS `download` (
  131. `id` int(11) NOT NULL AUTO_INCREMENT,
  132. `id_cat` int(11) NOT NULL,
  133. `grupa` varchar(200) NOT NULL,
  134. `nazwa` varchar(200) NOT NULL,
  135. `opis` text NOT NULL,
  136. `tresc` text NOT NULL,
  137. `adres` text NOT NULL,
  138. `licencja` varchar(200) NOT NULL,
  139. `wielkosc` varchar(50) NOT NULL,
  140. `pobran` int(11) NOT NULL,
  141. `data` int(11) NOT NULL,
  142. `ocen` int(11) NOT NULL,
  143. `suma` int(11) NOT NULL,
  144. PRIMARY KEY (`id`)
  145. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
  146. ");
  147. if($result1) echo 'Ok!<br />';
  148. else {
  149. echo 'Error!<br />'.mysql_error().'<br />';
  150. $error++;
  151. }
  152. $result2 = mysql_query("CREATE TABLE IF NOT EXISTS `download_categories` (
  153. `id` int(11) NOT NULL AUTO_INCREMENT,
  154. `id_cat` int(11) NOT NULL,
  155. `nazwa` varchar(200) NOT NULL,
  156. `opis` text NOT NULL,
  157. `ilosc` int(11) NOT NULL,
  158. PRIMARY KEY (`id`)
  159. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;");
  160. if($result2) echo 'Ok!<br />';
  161. else {
  162. echo 'Error!<br />'.mysql_error().'<br />';
  163. $error++;
  164. }
  165. $result3 = mysql_query("CREATE TABLE IF NOT EXISTS `download_comments` (
  166. `id` int(11) NOT NULL AUTO_INCREMENT,
  167. `id_plik` int(11) NOT NULL,
  168. `nick` varchar(200) NOT NULL,
  169. `tresc` text NOT NULL,
  170. `data` int(11) NOT NULL,
  171. PRIMARY KEY (`id`)
  172. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  173. ");
  174.  
  175.  
  176. if($result3) echo 'Ok!<br />';
  177. else {
  178. echo 'Error!<br />'.mysql_error().'<br />';
  179. $error++;
  180. }
  181. $result4 = mysql_query("CREATE TABLE IF NOT EXISTS `users` (
  182. `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  183. `user_name` varchar(255) NOT NULL,
  184. `user_password` varchar(40) NOT NULL,
  185. `user_email` varchar(255) NOT NULL,
  186. `user_regdate` int(10) unsigned NOT NULL,
  187. `user_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_polish_ci NOT NULL,
  188. `user_website` varchar(255) NOT NULL,
  189. `user_status` varchar(255) NOT NULL DEFAULT '0',
  190. `grupa` varchar(200) NOT NULL,
  191. PRIMARY KEY (`user_id`)
  192. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
  193. ");
  194.  
  195. if($result4) echo 'Ok!<br />';
  196. else {
  197. echo 'Error!<br />'.mysql_error().'<br />';
  198. $error++;
  199. }
  200. $result5 = mysql_query("CREATE TABLE IF NOT EXISTS `users_group` (
  201. `id` int(11) NOT NULL AUTO_INCREMENT,
  202. `grupa` varchar(200) NOT NULL,
  203. `nazwa` varchar(200) NOT NULL,
  204. `opis` text NOT NULL,
  205. `ilosc` varchar(100) NOT NULL,
  206. `aktywnosc` varchar(100) NOT NULL DEFAULT '0',
  207. `download_categories` varchar(100) NOT NULL,
  208. PRIMARY KEY (`id`)
  209. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;");
  210. if($result5) echo 'Ok!<br />';
  211. else {
  212. echo 'Error!<br />'.mysql_error().'<br />';
  213. $error++;
  214. }
  215. if($error > 0 ){
  216.  
  217. if(mysql_query($query))
  218. echo 'Nie udało się zainstalować schematu bazy danych. Wróć do kroku 2 aby poprawić połączenie z bazą danych. <a href="install.php?step=2">Popraw</a>';
  219.  
  220. }
  221. else
  222. { header("Location: install.php?step=4");
  223. }};
  224.  
  225. //dodawanie administratora
  226. function f4() {
  227. include ("config.php");
  228. db_connect();
  229. if(isset($_POST['name'])) {
  230. // filtrujemy dane...
  231. $_POST['name'] = clear($_POST['name']);
  232. $_POST['password'] = clear($_POST['password']);
  233. $_POST['password2'] = clear($_POST['password2']);
  234. $_POST['email'] = clear($_POST['email']);
  235.  
  236. // sprawdzamy czy wszystkie pola zostały wypełnione
  237. if(empty($_POST['name']) || empty($_POST['password']) || empty($_POST['password2']) || empty($_POST['email'])) {
  238. echo '<p>Musisz wypełnić wszystkie pola.</p>';
  239. // sprawdzamy czy podane dwa hasła są takie same
  240. } elseif($_POST['password'] != $_POST['password2']) {
  241. echo '<p>Podane hasła różnią się od siebie.</p>';
  242. // sprawdzamy poprawność emaila
  243. } elseif(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
  244. echo '<p>Podany email jest nieprawidłowy.</p>';
  245. } else {
  246. // sprawdzamy czy sÄ… jacyÅ› uzytkownicy z takim loginem lub adresem email
  247. $result = mysql_query("SELECT Count(user_id) FROM `users` WHERE `user_name` = '{$_POST['name']}' OR `user_email` = '{$_POST['email']}'");
  248. $row = mysql_fetch_row($result);
  249. if($row[0] > 0) {
  250. echo '<p>Już istnieje użytkownik z takim loginem lub adresem e-mail.</p>';
  251. } else {
  252. // jeśli nie istnieje to kodujemy haslo...
  253. $_POST['password'] = codepass($_POST['password']);
  254. // i wykonujemy zapytanie na dodanie usera
  255. $q1= "INSERT INTO `users_group`(`id`, `grupa`, `nazwa`, `opis`, `ilosc`, `aktywnosc`, `download_categories`) VALUES
  256. ('1','0','admin','grupa admin','0','1','')";
  257. $q2 = "INSERT INTO `users_group`(`id`,`grupa`, `nazwa`, `opis`, `ilosc`, `aktywnosc`, `download_categories`) VALUES
  258. ('2','0','start','Grupa startowa','0','1', '')";
  259. $q3 = "INSERT INTO `users` (`user_name`, `user_password`, `user_email`, `user_regdate`, `user_status`, `grupa`) VALUES ('{$_POST['name']}', '{$_POST['password']}', '{$_POST['email']}', '".time()."', 'administrator', 'admin')";
  260.  
  261. if(mysql_query($q1));
  262. if(mysql_query($q2));
  263. if(mysql_query($q3));
  264.  
  265.  
  266.  
  267. rename("install.php","install_.php");
  268. echo '<p>Konto admnistratora zostało utworzone! Możesz się teraz <a href="login.php">zalogować</a>.</p>';
  269. }
  270. }
  271. }
  272.  
  273. // wyświetlamy formularz
  274. echo 'Krok 4. Konto administratora.';
  275. echo '<form method="post" action="install.php?step=4">
  276. <p>
  277. Login:<br>
  278. <input type="text" value="'.$_POST['name'].'" name="name">
  279. </p>
  280. <p>
  281. Hasło:<br>
  282. <input type="password" value="'.$_POST['password'].'" name="password">
  283. </p>
  284. <p>
  285. Powtórz hasło:<br>
  286. <input type="password" value="'.$_POST['password2'].'" name="password2">
  287. </p>
  288. <p>
  289. E-mail:<br>
  290. <input type="text" value="'.$_POST['email'].'" name="email">
  291. </p>
  292. <p>
  293. <input type="submit" value="Zarejestruj">
  294. </p>
  295. </form>';
  296. db_close();
  297. }
  298.  
  299.  
  300.  
  301.  
  302. ?>


dziekuje za pomoc
mstraczkowski
¦cie¿ki s± poprawne ?, error_reporting masz w³±czony? jaki¶ b³±d wyskakuje ?
dzastin
Pytanie gdzie masz ustawione 777, bo mo¿e na katalogu nadrzêdnym nie masz uprawnieñ?
michu9010
brak bledu tylko skrypt zatrzymuje sie na zapisaniu danych do pliku i dalej nie przechodzi. tak katalog nadrzedny ma chmod 777. testowalem na dwoch serwisach cba ugu tak samo sie zachowuje na lokalnym win 7 dziala bez problemu. moze wystepowac blokada opracji na plikach na darmowych serwerach?
dzastin
Niewykluczone, mo¿e tam byæ ca³kiem ograniczone ¶rodowisko. Poszukaj w logach php jakiego¶ info.
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.