Napisalem skrypt ktory pobiera dane z pewnej stronki do ktorej bedzie mialo dostep wiele osob.
Skrypt wyglada nastepujaco :
Kod
<?php
$code = $_POST['kod'];
$name = $_POST['imie'];
fopen('test.xml', 'a');
$file='test.xml';
chmod($file,0666);
$filename = 'test.xml';
$data = '<?xml version="1.0" encoding="utf-8"?><zapytanie><imie>'.$name.'</imie><kod>'.$code.'</kod></zapytanie>';
//$file_path = ".;c:\Program Files\WebServ\cUrl";
if(!function_exists('file_put_contents')) {
function file_put_contents($filename, $data) {
$fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
if(!$fp) {
trigger_error('file_put_contents cannot write in file.', E_USER_ERROR);
return;
}
fwrite($fp, $data);
fclose($fp);
}
}
file_put_contents($filename, $data);
$ch = curl_init();
//curl_setopt($ch, CURLOPT_HEADER, 1);
//curl_setopt($ch, CURLOPT_NOBODY, 1);
$data = array('xml' => file_get_contents('test.xml'));
curl_setopt($ch, CURLOPT_URL, 'http://[jakishost]/test/zgloszenie.php');
//curl_setopt($ch, CURLOPT_URL, 'http://[jakishost]/test/weryfikacja.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
echo $output;
if (curl_errno($ch)) {
echo 'Błąd #' . curl_errno($ch) . ': ' . curl_error($ch);
}
curl_close($ch);
$file2 = 'back.xml';
$fo = fopen($file2, "a");
flock($fo, 2);
fwrite($fo, $output);
flock($fo, 3);
fclose($fo);
?>
Sprawa wyglada tak , ze uzytkownik wpisuje swoje imie oraz unikatowy kod do formularza.Wciskajac przycisk akceptacji uruchamia powyzszy skrypt.Skrypt zapisuje jego dane w pliku xml i wysyla na inny serwer. Na owym serwerze jest skrypt zgloszenie.php ktory odsyla takze xml-a z odpowiedzia czy zgloszenie jest poprawne (weryfikuje kod). Odeslany plik xml jest zapisywany przez moj skrypt do pliku back.xml.
Moje pytanie brzmi.
Czy istnieje w tym przypadku zagrozenie, iz korzystanie dwoch czy wiecej osob z tego skryptu jednoczesnie moze zaklocic jego dzialanie?
Czy istnieje mozliwosc nadpisania danych zapisywanych w pliku test.xml jednego uzytkownika przez drugiego?
Jesli tak to jak sie przed tym ustrzec ?