![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Może pokażę całość i to co chce uzyskać, bo po jednym błędzie to nie ma sensu. Moja rejestracja opiera się na krokach (3, 4 to potwierdzenie poprawności danych). W 3 kroku można zauploadować avatar. W bazie danych mam pole typu boolean, które sprawdza czy ktoś ma avatar. Jeśli ma, to ładuje obrazek z folderu 'pix/avatar'. W momencie rejestracji, przed przejściem z 3 do 4 kroku obrazek (po sprawdzeniu), jest przesyłany tymczasowo do folderu 'pix/avatar/temp'. Dane pomiędzy krokami przysałam w tablicy poprzez ciasteczko (serialize, unserialize). W ciasteczku chcę jeszcze przesłać tymczasową nazwę avatara, jego roszerzenie i to czy został zauploadowany (do bazy danych). Dam tutaj kawałek kodu:
Kod $types_z = array("image/png", "image/jpeg", "image/gif"); $types_na = array(".png", ".jpg", ".gif"); $type = str_replace($types_z, $types_na, $avatar['type']); $random = rand(1, 99999); $dane['avatar_nazwa'] = $random.$avatar['type']; $prznenies_avatar = move_uploaded_file($avatar['tmp_name'], 'pix/avatar/temp/'.$random.$avatar['type']); $dane['avatar_nazwa'] = $random.$avatar['type']; $dane['avatar_type'] = $avatar['type']; $dane['avatar'] = true; To było z kroku 3, teraz 4. Kod elseif($_GET['krok'] == 4) { $dane = unserialize($_COOKIE['dane']); if(isset($_POST['rejestruj'])) { $rejestruj = mysql_query('INSERT INTO users VALUES (false, "'.$dane['nick'].'","'.md5($dane['haslo']).'","'.$dane['email'].'","'.$dane['gg'].'","'.$dane['tekst_profil'].'","'.$dane['zainteresowania'].'","'.$dane['skad'].'","'.$dane['staz_www'].'","'.$dane['staz_gry'].'","'.$dane['strona_www'].'","'.$dane['avatar'].'","'.$dane['podpis'].'")') or die(mysql_error()); $pobierz = mysql_query('SELECT id_user FROM users WHERE nick_user LIKE "'.$dane['nick'].'"') or die(mysql_error()); $id = mysql_fetch_array($pobierz); echo($id[0]); echo($dane['avatar_nazwa']); $avatar_gotowy = copy('pix/avatar/temp/'.$dane['avatar_nazwa'], 'pix/avatar/avatar_'.$id[0].$dane['avatar_type']); unlink('/pix/avatar/temp'.$dane['avatar_nazwa']); echo($dane['avatar']); //Pobierz id dla avatarka if($rejestruj) { setcookie('dane', 'null', time() - 3600); setcookie('ukonczone', md5('tak')); unset($dane); header('location: index.php?rejestracja&krok=done'); } else { echo('Napotkano błąd w trakcie przetwarzania zapytania SQL'); } } } Jeśli chcecie zobaczyć tą wersje, wejdźcie na http://misiur.cal.pl i spróbujcie sięzarejestrować uploadując avatar o wielkości mniejszej niż 100x100 i 100kB. Od razu są błędy że nie może pobraż $dane['avatar_nazwa'], i $dane['avatar']. Najgorsze jest to że nie mogę wstawić do BD czy ktoś zauploadował avatar czy nie i mi zwraca coś o integerze, czy jakoś tak. Jeśli ktoś ma chęć się tym zająć udostępnie wszystkie pliki .php. Pozdr |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 84 Dołączył: 29.11.2006 Skąd: bełchatów Ostrzeżenie: (0%) ![]() ![]() |
a czy dane o tym obrazku (tymczasowym) widnieja w bazie danych/
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Nie, są one przekazywane w ciasteczku (ale coś jak sprawdzam to coraz więcej błędów znajduje) Chyba będę musiał napisać od nowa sprawdzanie obrazka, bo mam np.: zamiast is_array($co); issrray($co), zamiast is_uploaded_file($_FILE['jaki']), is_file_uploaded($_FILE['jaki']); Pewnie to się roi od błędów... No cóż, jeszcze sobie poszukam.
Edit: Ten fragment daje błędy, a dokładniej żaden element się nie wykonuje: Kod elseif($_GET['krok'] == 3)
{ $dane = unserialize($_COOKIE['dane']); if(isset($_POST['dalej_krok_3'])) { $blad = 0; $bledy = array(); if(is_uploaded_file($_FILES['avatar']['tmp_name'])) { $avatar = $_FILES['avatar']; //Bezpieczeństwo skryptu uploadu avatarów i ograniczenia rozmiarów if($avatar['type'] == 'image/png' || $avatar['type'] == 'image/jpg' || $avatar['type'] == 'image/gif') { //Dobra, to na pewno jpg, lub gif - a teraz trzeba się zabezpieczyć przed 'niby' gifami i jpg i png, ale też ograniczyć do 100x100 $tab = getimagesize($avatar['tmp_name']); list($szerokosc, $wysokosc, $format, $znacznik_html, $kanaly) = $tab; $bledy_a = array(); if(!is_array($tab) || $szerokosc < 2 || $wysokosc < 2) { echo('Masz za mały obrazek'); $bledy_a++; $blad++; $bledy[] = 'Twój obrazek jest spreparowany, lub zbyt mały'; } if($szerokosc > 100 || $wysokosc > 100) { echo('Masz za duży obrazek'); $bledy_a++; $blad++; $bledy[] = 'Twój obrazek jest zbyt duży'; } if($bledy_a == 0) { $types_z = array("image/png", "image/jpeg", "image/gif"); $types_na = array(".png", ".jpg", ".gif"); $type = str_replace($types_z, $types_na, $avatar['type']); $random = rand(1, 99999); $dane['avatar_nazwa'] = $random.$avatar['type']; $prznenies_avatar = move_uploaded_file($avatar['tmp_name'], 'pix/avatar/temp/'.$random.$avatar['type']); $dane['avatar_nazwa'] = $random.$avatar['type']; $dane['avatar_type'] = $avatar['type']; $dane['avatar'] = true; $blad++; $bledy[] = 'I powinno ustawić zmienne'; } } } else { $dane['avatar'] = false; $blad++; $bledy[] = 'pomija? 0o'; } if($_POST['podpis'] != null) { $dane['podpis'] = mysql_escape_string($_POST['podpis']); } else { $dane['podpis'] = null; } if($blad == 0) { setcookie('dane', serialize($dane)); header('location: index.php?strona=rejestracja&krok=4'); } else { echo('<div id="output_bledy">'); echo('<h4>Formularz zawiera błędy: <br/></h4>'); for ($i = 0; $i < count($bledy); $i++) { echo $bledy[$i].'<br />'; } echo('</div>'); } } } Ten post edytował Misiur66 28.12.2008, 19:44:17 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:09 |