Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]mkdir, $zmienna = $zmienna i str replace
Forum PHP.pl > Forum > Przedszkole
janek1230
Witam, mam taki skrypt:

  1. <?php
  2. if(!isSet($_SESSION['zalogowany'])){
  3. $_SESSION['komunikat'] = "Nie jestes zalogowany!";
  4. include('form.php');
  5. exit();
  6. }
  7. ?>
  8.  
  9. <? include ("config2.php") ?>
  10. <? include ('gora2.php') ?>
  11. <?php
  12.  
  13. error_reporting(E_ALL & ~E_NOTICE);
  14. $_POST['nazwa']=str_replace(' ', '_', $_POST['nazwa']);
  15. if(file_exists('../film/filmy/'.$_POST['nazwa'].'.php'))
  16. {
  17. echo 'jest';
  18. }
  19.  
  20.  
  21.  
  22. $_POST['rezyseria']=str_replace(' ', '_', $_POST['rezyseria']);
  23. $_POST['scenariusz']=str_replace(' ', '_', $_POST['scenariusz']);
  24. $_POST['zdjecia']=str_replace(' ', '_', $_POST['zdjecia']);
  25. $_POST['muzyka']=str_replace(' ', '_', $_POST['muzyka']);
  26.  
  27. {
  28. }
  29. if
  30. (!empty($_POST['nazwa']) && !empty($_POST['recenzja']) && !empty($_POST['rokswiat']) && !empty($_POST['rokpolska']) && !empty($_POST['nazwapolska']) && !empty($_POST['czas']) && !empty($_POST['kraj']) && !empty($_POST['gatunek']) && !empty($_POST['rezyseria']) && !empty($_POST['scenariusz']) && !empty($_POST['zdjecia']) && !empty($_POST['muzyka']) && !empty($_POST['obsada'] ))
  31.  
  32.  
  33. { 
  34.  $szablon = '
  35.  <? include ("../config2.php") ?>
  36.  <title>'.$_POST['nazwa'].' - '.$tytul.'</title>
  37.  
  38.  
  39.  <? include("../gora.php") ?>
  40. <? $nazwa = "'.$nazwa.'" ?>
  41.  Dodane dnia:'.date("Y-m-d").', przez
  42.  <a href=../users/'.$_SESSION['zalogowany'].'>'.$_SESSION['zalogowany'].'</a><br>
  43. <font size="4"><b>'.$_POST['nazwapolska'].'</font></b><br>
  44. <i>'.$_POST['nazwa'].'</i>
  45. ('.$_POST['rokswiat'].')<br>
  46. Produkcja:'.$_POST['kraj'].', 
  47. gatunek:'.$_POST['gatunek'].'<br>
  48. data premiery:'.$_POST['rokpolska'].'(polska), 
  49. '.$_POST['rokswiat'].'(świat)<br><br>
  50. Reżyseria:<a href=../aktorzy/'.$_POST['rezyseria'].'>'.$_POST['rezyseria'].'</a>
  51. Scenariusz:<a href=../aktorzy/'.$_POST['scenariusz'].'>'.$_POST['scenariusz'].'</a>
  52. Zdjęcia:<a href=../aktorzy/'.$_POST['zdjecia'].'>'.$_POST['zdjecia'].'</a>
  53. Muzyka:<a href=../aktorzy/'.$_POST['muzyka'].'>'.$_POST['muzyka'].'</a>
  54. Czas:'.$_POST['czas'].'<br><br>
  55.  
  56.  <font size="4"><b> Recenzje:</b></font><br>'.$_POST['recenzja'].'<br><br>
  57. <font size="4"><b> Obsada:</b></font><br>'.$_POST['obsada'].'
  58.  <? include ("../dol.php") ?>'; 
  59.  if (is_dir('../film/filmy/') === true) { 
  60. $plik = fopen('../film/filmy/'.$_POST['nazwa'].'.php','w');
  61.  fwrite($plik, $szablon); 
  62. fclose($plik); 
  63.  } else { 
  64.  die('nieudana próba utworzenia pliku (katalog nie istnieje)'); 
  65.  } 
  66. } else { 
  67.  echo('<form action="" method="POST"> 
  68. <center>
  69. <br>Tytuł filmu:<br><input type="text" name="nazwa" style="width: 500px;"> <br>
  70. Tytuł polski:<br><input type="text" name="nazwapolska"style="width: 500px;"><br> 
  71. Premiera(polska):<br><input type="text" name="rokpolska"style="width: 500px;"> <br>
  72. Premiera(świat):<br><input type="text" name="rokswiat"style="width: 500px;"> <br>
  73. Kraj:<br><input type="text" name="kraj"style="width: 500px;"> <br>
  74. Czas trwania(min):<br><input type="text" name="czas"style="width: 500px;"> <br>
  75. Gatunek:<br><input type="text" name="gatunek"style="width: 500px;"> <br>
  76. Reżyseria:<br><input type="text" name="rezyseria"style="width: 500px;"> <br>
  77. Scenariusz:<br><input type="text" name="scenariusz"style="width: 500px;"> <br>
  78. Zdjęcia:<br><input type="text" name="zdjecia"style="width: 500px;"> <br>
  79. Muzyka:<br><input type="text" name="muzyka"style="width: 500px;"> <br><br><br>
  80. Obsada(html):<A href="pomoc/Dodaj_Film_Obsada" target="_blank"><img src="gfx/jak.png"></a><br><textarea name="obsada" style="width: 500px; height: 100px";></a></textarea> <br>
  81. Recenzja(html):<br><textarea name="recenzja" style="width: 500px; height: 100px";></textarea> 
  82.  
  83.  
  84. <br>
  85. <input type="submit" value="Dodaj film"> 
  86. <form>'); 
  87. } 
  88.  
  89.  
  90.  
  91.  
  92. ?>
  93.  
  94.  
  95. <? include ('dol2.php') ?>
  96. <?php
  97. $_POST['nazwa']=str_replace(' ', '_', $_POST['nazwa']);
  98. mkdir ("upload/$nazwa", 0777);
  99. ?>


Problem polega na tym że dla zmiennej $nazwa jest ustawione str replace, i podstrona tworzy się okej - spacje są zamieniane na "_",
jednak przy tworzeniu folderu (mkdir) nazwa pozostaje ze spacjami. Tak jak w linii 42 zmienna nazwa pobierana i zapisywana jest do utworzonej podstrony ze spacjami. Czy ktoś wie co może być tego przyczyną?
PawelC
Dopisz tam:
  1. <?php
  2. $nazwa=$_POST['nazwa'];
  3. $nazwa=str_replace(' ','_', $nazwa);
  4. ?>
i powinno grać
A to wywal
  1. <?php
  2. $_POST['nazwa']=str_replace(' ', '_', $_POST['nazwa']);
  3. ?>
janek1230
Dzięki, a jeszcze mam problem z chmodami - folder który jest tworzony ma chmod 755 a nie jak jest wpisane 777...
PawelC
ja się kiedyś spotkałem z serwerem który ze względu na bezpieczeństwo nie zezwalał na ustawienie chmod na 777, być może dlatego, choć mogę się mylić. Wklej pod mkdir
  1. <?php
  2. chmod("/upload/$nazwa", 0777);
  3. ?>

I zobacz jaki będzie tego efekt.

Co do tego błędu w kodzie:
Zrobiłeś str_replace tak:
  1. <?php
  2. $_POST['nazwa']=str_replace(' ', '_', $_POST['nazwa']);
  3. ?>


Czyli posługując się $nazwa niemiał prawa wstawić w miejsce spacji podkreślenia, ponieważ str_replace było dla $_POST['nazwa'] a nie $nazwa, dlatego wystarczy zrobić $nazwa=$_POST['nazwa']; lub w kodzie gdzie masz mkdir zamiast $nazwa wstawić $_POST['nazwa']; to tak na przyszłość winksmiley.jpg
janek1230
okej smile.gif po dodaniu ...chmod... zmienia smile.gif
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.