Autor Zpráva
Karel Zelenomocník
Profil *
Dobrý den,
Chtěl jsem si udělat registraci, vše šlo.
Chtěl jsem si ještě k registraci připojit obrázek, protože budu dělat Guest Book pro reg. uživatele - tak aby bylo lépe poznat (podle obrázku), o koho jde. Jenže se mi to nějak nevyvedlo a už 2 hodiny nad tím sedím, zkouším vše možné i nemožné a ne a ne najít chybu.
Chtěl bych vás tedy poprosit, jestli by se někdo z vás na můj chybný kód podíval a poradil mi, kde mám chybu.
<div style="text-align: left;">
<form action="#" method="post">
<input type="text" name="rjmeno"> Uživatelské jméno (2 a víc znaků, Citlivé na velikost písmen !)<BR><BR>
<input type="text" name="rmail"> Email<BR><BR>
<input type="password" name="rheslo">  Vaše heslo (4 a víc znaků)<BR><BR>
<input type="password" name="rheslo2"> Heslo podruhé<BR><BR>
<input type="file" name="obrazek" />Obrázek (Nepovinné)<BR><HR noshade>
<input type="submit" name="odeslat" value="Zaregistrovat"><BR>
</form>
</div>
<center><strong>Status :</strong>
<?php
/* PODMÍNKY START */
if (isset($_POST['rjmeno'])){
if (ereg("^.{2,}$", $_POST['rjmeno'])){
if (ereg("^.{4,}$", $_POST['rheslo'])){
if (ereg("^.+@.+\\..+$", $_POST['rmail'])){
if ($_POST["rheslo"]==$_POST['rheslo2']){
if (file_exists("uzivatele/".$_POST['rjmeno'].".php")){ echo "Uživatel se stejným jménem již existuje, vyberte si prosím jiné.";} else {
/* PODMÍNKY KONEC */
/* UPLOAD OBRÁZKU START */
if($_FILES['obrazek']> 1){
if(!$_FILES['obrazek']['type']=="image/jpeg"){
echo "Jsou povoleny jen formáty JPG, JPEG, PJEG, PNG !";
$obrazek_s_cestou = "uzivatele/obrazky/bezobrazku.bmp";
}else{
if(!$_FILES['obrazek']['type']=="image/jpg"){
echo "Jsou povoleny jen formáty JPG, JPEG, PJEG, PNG !";
$obrazek_s_cestou = "uzivatele/obrazky/bezobrazku.bmp";
}else{
if(!$_FILES['obrazek']['type']=="image/pjeg"){
echo "Jsou povoleny jen formáty JPG, JPEG, PJEG, PNG !";
$obrazek_s_cestou = "uzivatele/obrazky/bezobrazku.bmp";
}else{
if(!$_FILES['obrazek']['type']=="image/png"){
echo "Jsou povoleny jen formáty JPG, JPEG, PJEG, PNG !";
$obrazek_s_cestou = "uzivatele/obrazky/bezobrazku.bmp";
}else{        
$cesta="uzivatele/obrazky/";
$slozka = "uzivatele/obrazky";
$cil = $slozka . "/" .$_FILES['obrazek']['name'];
$nazev_souboru = $_FILES['obrazek']['tmp_name'];
$copy = move_uploaded_file($nazev_souboru, $cil)
or die ("Přenesený soubor nelze zkopírovat");
chmod ($cil, 0777);
if($copy == true){
}else{
echo "Soubor nemohl být nahrán.\nPočet chyb: " . $_FILES['fupload']['error'];
}}}}}} else $obrazek_s_cestou = "uzivatele/obrazky/bezobrazku.bmp";
/* VYTVÁŘENÍ STRÁNKY UŽIVATELE START */
$heslo_sha1 = sha1 ($_POST['rheslo']);
$co_ulozit = "<?php if(\$_SERVER['REMOTE_ADDR']==\"123.123.123.123\"){ echo \"<+\+|+/+>".$_POST['rmail']."<+\+|+/+>".$heslo_sha1."<+\+|+/+>$cil<+\+|+/+>\";}?>";
$stranka_uzivatele = fopen("uzivatele/".$_POST['rjmeno'].".php", "w+");
fwrite($stranka_uzivatele, $co_ulozit);
fclose($stranka_uzivatele);
/* VYTVÁŘENÍ STRÁNKY UŽIVATELE KONEC */
/* HLÁŠKA O ÚSPĚŠNOSTI START */
echo $_FILES['obrazek']['name']."Registrace úspěšná !<BR>Nyní se můžete přihlásit.</script>";
/* HLÁŠKA O ÚSPĚŠNOSTI KONEC */
}} else echo "Heslo nesouhlasí !";}
else echo "Špatný formát e-mailu !";
/* CHYBOVÁ HLÁŠKA START */
} else echo "Heslo musí mít alespoň 4 znaky !"; }
else echo "Jméno musí mít alespoň 2 znaky !";}
/* CHYBOVÁ HLÁŠKA KONEC */
?></center>


Děkuji, už jen za přečtení příspěvku,
Karel Zelenomocík
Alphard
Profil
Kód jako celek radši nekomentuji :-)
Formulář, který odesílá soubor musí mít enctype="multipart/form-data".
Místo $_FILES['obrazek']> 1 bude lepší funkce is_uploaded_file(). A po podmínce na řádku 23 jsem radši přestal číst dál.
Karel Zelenomocník
Profil *
Post dodal jsem enctype, ale pořád se mi obrázek nenaloaduje.

Co je na té podmínce špatně ? Rád bych věděl co jsem udělal špatně abych se ponaučil, díky.
Alphard
Profil
Karel Zelenomocník:
dodal jsem enctype, ale pořád se mi obrázek nenaloaduje.
A co se stane? Vypisuje se nějaká chyba?

Co je na té podmínce špatně ? Rád bych věděl co jsem udělal špatně abych se ponaučil
Není to přímo špatně, ale je to nepřehledné a neudržovatelné. Dobrým zvykem je alespoň odsazovat kód.

Těžko říct, kde je chyba, je to fakt nečitelné. Zkuste zakomentovat ty podmínky a nechte jenom čistý upload, jestli to půjde, je chyba v podmínkách, jestli ne, tak uploadu samotném.
fajzen
Profil
Co je na té podmínce špatně ?

if(!$_FILES['obrazek']['type']=="image/jpeg"){
Najskôr sa zneguje $_FILES['obrazek']['type'], čo je reťazec a ten sa vždy zneguje na false (ak nie je prázdny) a potom sa porovnáva s reťazcom "image/jpeg", ktorý sa prevedie na bool hodnotu true...

Správny tvar podmienky:
if($_FILES['obrazek']['type']!="image/jpeg"){
prípadne ešte aj
if(!($_FILES['obrazek']['type']=="image/jpeg")){

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: