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:
<?php
include './header.php';
echo '<h2>Instalacja</h2><p>'; switch($_GET['step']){
default:
f1();
break;
case "2":
f2();
break;
case "3":
f3();
break;
case "4":
f4();
break;
}
//funkcje instalacji
function f1(){
echo "Krok 1. Sprawdzanie danych.<br>"; //sprawdza wersje php jesli bedzie niĹźsza od 5 nie przejdzie do nastepnego kroku
if (PHP_VERSION > 5) {
echo " OK. Twoja wersja to ";
} else echo "Zbyt niska wersja PHP!";
$chmod = "<b>OK</b> - Plik istnieje i jest zapisywalny";
}
}
else {
$chmod = "<b>UWAGA</b> - Plik nie jest zapisywalny lub nie istnieje";
}
echo '<br><a href="install.php?step=2">>></a>'; }
function f2() {
echo "Krok 2. Wpisz dane serwera."; echo '<form method="post" action="install.php?step=2"> <p>
Adres serwera:<br>
<input type="text" value="" name="dbhost">
</p>
<p>
UĹźytkownik bazy:<br>
<input type="text" value="" name="dbuser">
</p>
<p>
HasĹo bazy:<br>
<input type="password" value="" name="dbpass">
</p>
<p>
Nazwa bazy:<br>
<input type="text" value="" name="dbname">
</p>
<p>
<input type="submit" value="SprawdĹş">
</p>
</form>';
} else echo "<br>Zapis danych powiĂłdĹ siÄ. MoĹźesz kontynuowaÄ. <a href='install.php?step=3'>>></a>"; function clear($text) {
// jeĹli serwer automatycznie dodaje slashe to je usuwamy
}
$text = trim($text); // usuwamy biaĹe znaki na poczÄ
tku i na koĹcu return $text;
}
if(isset($_POST['dbhost'])) {
file_put_contents('db.php', '');
// zmienna $dane, ktĂłra bÄdzie zapisana
// moĹźe takĹźe pochodziÄ z formularza np. $dane = $_POST['dane'];
$_POST['dbhost'] = clear($_POST['dbhost']);
$_POST['dbuser'] = clear($_POST['dbuser']);
$_POST['dbpass'] = clear($_POST['dbpass']);
$_POST['dbname'] = clear($_POST['dbname']);
if(empty($_POST['dbhost']) || empty($_POST['dbuser']) || empty($_POST['dbpass']) || empty($_POST['dbname'])) { echo "<p>UzupeĹnij wszystkie pola!</p>"; header("Location: install.php?step=2"); }
//zapis danych z formularza
$dane = "<?php
define('DBHOST', '".$_POST['dbhost']."');
define('DBUSER', '".$_POST['dbuser']."');
define('DBPASS', '".$_POST['dbpass']."');
define('DBNAME', '".$_POST['dbname']."');
?>";
// przypisanie zmniennej $file nazwy pliku
$file = "db.php";
// uchwyt pliku, otwarcie do dopisania
// blokada pliku do zapisu
// zapisanie danych do pliku
// odblokowanie pliku
// zamkniÄcie pliku
}
}
//instaluje schemat bazy danych
function f3() {
echo 'Krok 3. Instalacja schematu bazy danych.'; include ("config.php");
db_connect();
$result1 = mysql_query("CREATE TABLE IF NOT EXISTS `download` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`id_cat` int(11) NOT NULL,
`grupa` varchar(200) NOT NULL,
`nazwa` varchar(200) NOT NULL,
`opis` text NOT NULL,
`tresc` text NOT NULL,
`adres` text NOT NULL,
`licencja` varchar(200) NOT NULL,
`wielkosc` varchar(50) NOT NULL,
`pobran` int(11) NOT NULL,
`data` int(11) NOT NULL,
`ocen` int(11) NOT NULL,
`suma` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
");
if($result1) echo 'Ok!<br />'; else {
$error++;
}
$result2 = mysql_query("CREATE TABLE IF NOT EXISTS `download_categories` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`id_cat` int(11) NOT NULL,
`nazwa` varchar(200) NOT NULL,
`opis` text NOT NULL,
`ilosc` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;");
if($result2) echo 'Ok!<br />'; else {
$error++;
}
$result3 = mysql_query("CREATE TABLE IF NOT EXISTS `download_comments` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`id_plik` int(11) NOT NULL,
`nick` varchar(200) NOT NULL,
`tresc` text NOT NULL,
`data` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
");
if($result3) echo 'Ok!<br />'; else {
$error++;
}
$result4 = mysql_query("CREATE TABLE IF NOT EXISTS `users` ( `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) NOT NULL,
`user_password` varchar(40) NOT NULL,
`user_email` varchar(255) NOT NULL,
`user_regdate` int(10) unsigned NOT NULL,
`user_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_polish_ci NOT NULL,
`user_website` varchar(255) NOT NULL,
`user_status` varchar(255) NOT NULL DEFAULT '0',
`grupa` varchar(200) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
");
if($result4) echo 'Ok!<br />'; else {
$error++;
}
$result5 = mysql_query("CREATE TABLE IF NOT EXISTS `users_group` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`grupa` varchar(200) NOT NULL,
`nazwa` varchar(200) NOT NULL,
`opis` text NOT NULL,
`ilosc` varchar(100) NOT NULL,
`aktywnosc` varchar(100) NOT NULL DEFAULT '0',
`download_categories` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;");
if($result5) echo 'Ok!<br />'; else {
$error++;
}
if($error > 0 ){
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>';
}
else
{ header("Location: install.php?step=4"); }};
//dodawanie administratora
function f4() {
include ("config.php");
db_connect();
if(isset($_POST['name'])) { // filtrujemy dane...
$_POST['name'] = clear($_POST['name']);
$_POST['password'] = clear($_POST['password']);
$_POST['password2'] = clear($_POST['password2']);
$_POST['email'] = clear($_POST['email']);
// sprawdzamy czy wszystkie pola zostaĹy wypeĹnione
if(empty($_POST['name']) || empty($_POST['password']) || empty($_POST['password2']) || empty($_POST['email'])) { echo '<p>Musisz wypeĹniÄ wszystkie pola.</p>'; // sprawdzamy czy podane dwa hasĹa sÄ
takie same
} elseif($_POST['password'] != $_POST['password2']) {
echo '<p>Podane hasĹa róşniÄ
siÄ od siebie.</p>'; // sprawdzamy poprawnoĹÄ emaila
} elseif(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
echo '<p>Podany email jest nieprawidĹowy.</p>'; } else {
// sprawdzamy czy sÄ
jacyĹ uzytkownicy z takim loginem lub adresem email
$result = mysql_query("SELECT Count(user_id) FROM `users` WHERE `user_name` = '{$_POST['name']}' OR `user_email` = '{$_POST['email']}'"); if($row[0] > 0) {
echo '<p>JuĹź istnieje uĹźytkownik z takim loginem lub adresem e-mail.</p>'; } else {
// jeĹli nie istnieje to kodujemy haslo...
$_POST['password'] = codepass($_POST['password']);
// i wykonujemy zapytanie na dodanie usera
$q1= "INSERT INTO `users_group`(`id`, `grupa`, `nazwa`, `opis`, `ilosc`, `aktywnosc`, `download_categories`) VALUES
('1','0','admin','grupa admin','0','1','')";
$q2 = "INSERT INTO `users_group`(`id`,`grupa`, `nazwa`, `opis`, `ilosc`, `aktywnosc`, `download_categories`) VALUES
('2','0','start','Grupa startowa','0','1', '')";
$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')";
rename("install.php","install_.php"); echo '<p>Konto admnistratora zostaĹo utworzone! MoĹźesz siÄ teraz <a href="login.php">zalogowaÄ</a>.</p>'; }
}
}
// wyĹwietlamy formularz
echo 'Krok 4. Konto administratora.'; echo '<form method="post" action="install.php?step=4"> <p>
Login:<br>
<input type="text" value="'.$_POST['name'].'" name="name">
</p>
<p>
HasĹo:<br>
<input type="password" value="'.$_POST['password'].'" name="password">
</p>
<p>
PowtĂłrz hasĹo:<br>
<input type="password" value="'.$_POST['password2'].'" name="password2">
</p>
<p>
E-mail:<br>
<input type="text" value="'.$_POST['email'].'" name="email">
</p>
<p>
<input type="submit" value="Zarejestruj">
</p>
</form>';
db_close();
}
?>
dziekuje za pomoc