Autor Zpráva
rychlej_chřestýš
Profil *
ahoj.
mám takový docela zajímavý (teda podle mě) dotaz. jedná se o kopírování souboru na web. používám normálně php fci copy(), ale nejde mi zprovoznit. jedna podmínka s adresou souboru mi prostě nevychází, vůbec mi nepošle adresu souboru, který se má kopírovat. zkoušel jsem i koukat po jménech proměnných, měnit, vypisovat, koukám do toho už několik dní a prostě nic.
prosím vás, koukněte mi na to, už to fakt vzdávám ;) - díky

vypisuje chybu "zadaná cesta k souboru je neplatná". soubory pro připojení jsou includovány v souboru esp_hlavicka.php a esp_patka.php zajišťuje výpis $err.

esp_sprava_vzhledy.php:

<?php
include "esp_hlavicka.php";

if(!$_SESSION['g_user_n']){
// uživatel není adminem. nemá tu co pohledávat
echo "<meta http-equiv=\"refresh\" content=\"0.01;URL=esp_index.php\" />";
exit;
}else{

// výběr komplet všech nahraných vzhledů
$sql = "SELECT id, nazev, soubor FROM esp_vzhledy";
$dotaz = mysql_query($sql); // vybere všechny vzhledy

if(mysql_num_rows($dotaz) == 0){ $vzhledy = "<p>Nejsou nahrány žádné další vzhledy."; }

while($motiv = mysql_fetch_array($dotaz)){
$vzhledy .= "<div class=\"zaznam\">\n";
$vzhledy .= "<div class=\"sl1\"><input type=\"checkbox\" name=\"vzhled".$motiv['id']."\" ";
$vzhledy .= "id=\"vzhled".$motiv['id']."\" /> ";
$vzhledy .= "<label for=\"vzhled".$motiv['id']."\">".$motiv['nazev']."</label></div>\n";
$vzhledy .= "<div class=\"sl2\"><label for=\"vzhled".$motiv['id']."\">";
$vzhledy .= $motiv['soubor']."</label></div>\n<div class=\"sl3\">";
$vzhledy .= "<input type=\"text\" name=\"motiv".$motiv['id']."\" value=\"".$motiv['nazev']."\" /></div>\n";
$vzhledy .= "</div>\n";
}

?>
<div class="nadpis">Přidat nový vzhled</div>

<p>Zde můžete přidat nový motiv vzhledu stránek, který si budou moci uživatelé nastavit. Je však bezpodmínečně
nutné, aby dodržoval některá pravidla, a proto doporučujeme nechat vyrobit tento styl od výrobce tohoto systému,
jinak nemůže být zaručena jeho správná funkčnost.</p>

<p>Lze nahrát pouze soubory typu CSS (Cascading Style Sheet) s nenulovou délkou. Před jejich nahráním je
doporučujeme [<a href="http://jigsaw.w3.org/css-validator/" class="pryc">zvalidovat</a>].</p><br />

<p><form action="esp_akce_vzhledy.php" method="post" enctype="multipart/form-data">
<div class="zaznam">
<div class="sl1"><label for="nazev">Název vzhledu:</label></div>
<div class="sl2"><input type="text" name="nazev" id="nazev" /></div>
</div>
<div class="zaznam">
<div class="sl1"><label for="cesta">Umístění:</label></div>
<div class="sl2"><input type="file" name="cesta_soubor" /></div>
</div></p><p>
<div class="zaznam">
<div class="sl1"></div>
<div class="sl2"><input type="submit" name="ok" value="Nahrát nový styl" /></div>
</div>
</form></p><br /><br /><br />


<div class="nadpis">Mazání a editace stylů</div>

<p>Zde můžete upravit názvy jednotlivých stylů nebo je smazat. Pokud bude nějaký styl mazán, bude všem
uživatelům, kteří ho mají aktuálně nastavený, přenastaven základní styl (hlavni.css).</p>

<p><form action="esp_akce_vzhledy.php" method="post">
<?=$vzhledy;?></p><p>
<div class="zaznam">
<div class="sl1"><input type="submit" name="ulozit" value="Uložit" /> <input type="submit" name="del" value="Smazat" /></div>
<div class="sl2"></div>
<div class="sl3"></div>
</div>
</form></p><br /><br /><br />

<?php

}

include "esp_patka.php";
?>


esp_akce_vzhledy.php
<?php
include "esp_hlavicka.php";

if(!$_SESSION['g_user_n']){
// uživatel není adminem. nemá tu co pohledávat
echo "<meta http-equiv=\"refresh\" content=\"0.01;URL=esp_index.php\" />";
exit;
}else{
//extract($_REQUEST);

if($_POST['ok']){
if($_POST['nazev'] and $_POST['nazev'] <> "hlavni" and $_POST['nazev'] <> " "){
if($_POST['cesta_soubor'] <> " " and ereg(".*[a-z].*css", $_POST['cesta_soubor'])){
//if(ereg(".*css", $_POST['cesta_soubor'])){
$soubor = $_POST['cesta'];
$nazev_server = "esp_";
$nazev_server .= bezdiakriticky($_POST['nazev']); // vytvoří název souboru
$nazev_server .= ".css"; // přidáme příponu

if(!file_exists($nazev_server)){
@ftp_connect($ftp_uzivatel); // připojí k ftp serveru
$a = copy($_POST['cesta_soubor'], "./".$nazev_server); // nakopíruje to na server
mysql_query("INSERT INTO esp_vzhledy (nazev, soubor) VALUES ('".$_POST['nazev']."', '".$nazev_server."')");
// zapíšeme do databáze a je hotovo

if($a){
echo "<meta http-equiv=\"refresh\" content=\"0.01;URL=esp_sprava_vzhledy.php\" />";
}else{
$err = "Soubor se nepodařilo nahrát.";
$info = "info";
}
}else{
$err = "Prosím, zvolte jiný název vzhledu, protože na serveru již jeden stejnojmenný existuje.";
$info = "info";
}

}else{
$err = "Zadaná cesta k souboru není platná.";
$err .= $_POST['cesta_soubor'];
}
}else{
$err = "Nebyl vyplněn název motivu vzhledu nebo nemá správný tvar.";
}
}


if($_POST['ulozit'] or $_POST['del']){
$sql = "SELECT id, nazev, soubor FROM esp_vzhledy";
$dotaz = mysql_query($sql);

while($motiv = mysql_fetch_array($dotaz)){
$id = $motiv['id'];

if($_POST['vzhled'.$id]){ // pokud byl vybrán k akci
if($_POST['del']){
// upravíme u uživatelů na základní vzhled
mysql_query("UPDATE esp_uzivatele SET vzhled = '0' WHERE vzhled = '".$id."'");
// smažeme
mysql_query("DELETE FROM esp_vzhledy WHERE id = '".$id."'");
unlink($motiv['soubor']); // smažeme ze serveru
$smerovat = 1;
}

if($_POST['ulozit']){
if($_POST['motiv'.$id] and $_POST['motiv'.$id] <> " "){
mysql_query("UPDATE esp_vzhledy SET nazev = '".$_POST['motiv'.$id]."'");
$smerovat = 1;
}else{
$err = "Vybraný motiv ".$motiv['nazev']." nemá platný název.";
}
}

}

}

if($smerovat == 1){ echo "<meta http-equiv=\"refresh\" content=\"0.01;URL=esp_sprava_vzhledy.php\" />"; }

}

}

include "esp_patka.php";
?>
TSD
Profil
Opravdu je nutné sem kvůli cca 15 řádkům kódu cpát půl tvého webu?
rychlej_chřestýš
Profil *
omlouvám se, ale radsi pro jistotu abych nesmazal neco co by na to mohlo mit vliv ;) fakt sorry ;)
sicario
Profil
Tak jeste prozkoumej promennou $_FILES. Misto fce. copy, ktera byva na hostinzich casto zakazana bych pouzil fci. move_uploaded_file.
rychlej_chřestýš
Profil *
díky, už mi to chodí. použil jsem $_FILES a ten move_uploaded_file a chodí to v pohodě. díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0