Redenumire poza incarcata cu nume utilizator

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Redenumire poza incarcata cu nume utilizator

Am un cod de incarcare poza pe site, merge ok.
Vreau ca poza incarcata sa poarte denumirea numelui de utilizator care se inregistreaza pe site si incarca poza.
In formularul de inregistrare am si incarcare poza .
Acesta e codul pentru incarcare poza care il folosesc la formularul de inregistrare
Vreau ca poza sa se numeasca "numeutilizator.jpg" sau "numeutilizator" fara extensie.

Cod: Selectaţi tot

<?php
$uploadpath = 'poza-profil/';    // directory to store the uploaded files
$max_size = 5000;                // maximum file size, in KiloBytes
$alwidth = 5000;                 // maximum allowed width, in pixels
$alheight = 5000;                // maximum allowed height, in pixels
$allowtype = array('jpg', 'jpe');        // allowed extensions

if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {
$uploadpath = $uploadpath . basename($nume.$_FILES['fileup']['name']);   // gets the file name
$sepext = explode('.', strtolower($_FILES['fileup']['name']));
$type = end($sepext);    // gets extension
list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']);     // gets image width and height
$err = '';               // to store the errors


// Checks if the file has allowed type, size, width and height (for images)
if(!in_array($type, $allowtype)) $err .= 'Poza: <b>'. $_FILES['fileup']['name']. '</b> nu are tipul de extensie acceptata - jpg sau jpe.';
if($_FILES['fileup']['size'] > $max_size*1000) $err .= '<br/>Marimea maxima trebuie sa fie de: '. $max_size. ' KB.';
if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<br/>Marimea maxima a inaltimii si latimii trebuie sa fie: '. $alwidth. ' x '. $alheight;

// If no errors, upload the image, else, output the errors
if($err == '') {
if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) {
         echo 'Poza incarcata cu succes';
         }
else echo '<b>Poza nu a putut fi incarcata. Incearca alta poza.</b>';
}
else echo $err;
}
?>
<input type="file" name="fileup" />

MarPlo Mesaje:4343
Daca numele de utilizator e retinut intr-o sesiune, incearca sa inlocuiesti linia asta:

Cod: Selectaţi tot

$uploadpath = $uploadpath . basename($nume.$_FILES['fileup']['name']);
Cu asta:

Cod: Selectaţi tot

$uploadpath = $uploadpath . $_SESSION['nume'];
 

cadou Mesaje:328
Pana la urma am rezolvat, am folosit numele preluat din formular; in loc de Session , $_POST['nume'] .
Dar imi trimite fara extensie, cum fac sa trimita si extensia .jpg ,adica sa fie numele pozei : "numeutilizator.jpg".

2. Cum fac sa afisez poza in functie de utilizatorul logat ?

MarPlo Mesaje:4343
Ca sa adaugi extensia la nume, trebuie sa modifici putin in codul tau, sa definesti $ulpoadpath dupa $type (care contine extensia), si apoi se adauga $type la $uploadpath.
Sa fie asa:

Cod: Selectaţi tot

$sepext = explode('.', strtolower($_FILES['fileup']['name']));
$type = end($sepext);    // gets extension
$uploadpath = $uploadpath . $_POST['nume']. '.'. $type;   // gets the file name
 
2. Daca numele e retinut in $_SESSION['nume'], se poate afisa imaginea cam asa:

Cod: Selectaţi tot

if(isset($_SESSION['nume'])) echo '<img src="dir_imagini/'. $_SESSION['nume']. '.jpg" alt="'. $_SESSION['nume']. '" />';
else echo '<img src="dir_imagini/poza_pt_nelogat.jpg" alt="Ne-logat" />';
 

cadou Mesaje:328
Daca fac cu nume am descoperit o mica problema, cum fac ca numele pozei sa fie Id-ul unic din tabel cel de auto increment.
Am incercat asa :

Cod: Selectaţi tot

$uploadpath = $uploadpath . $_SESSION['id']. '.'. $type;
 
Dar nu e definit $_SESSION['id']
Am mai incercat si:

Cod: Selectaţi tot

$uploadpath = $uploadpath . $_POST['id']. '.'. $type;
 
La fel zice ca nu e definit.

MarPlo Mesaje:4343
Daca vrei sa folosesti ID-ul utilizatorului din baza de date in loc de nume, la imaginea incarcata, logic ca trebuie intai sa preiei ID-ul din tabelul bazei de date inainte de a defini numele pt. imagine, apoi il adaugi in imagine.
Un model scurt pe care sa-l dezvolti e asa:

Cod: Selectaţi tot

// conectare la mysql

$nume = strip_tags($_POST['nume']);       // nume_utilizator
$id = 0;      // valoare initiala, in caz ca nu e gasit vreun "id"
$sql = "SELECT `id` FROM `nume_tabel` WHERE `colona_nume`='$nume' LIMIT 1";
// se face selectul si se preia ID-ul din randul returnat:
//    $id = $row['id'];

$uploadpath = $uploadpath . $id. '.'. $type;
// ... 

cadou Mesaje:328
Toate pozele mi le redenumeste 0.jpg (zero.jpg)
In baza de date ultimul id este 140.

Uite cum arata codu meu :
Parerea mea la randul $id=0 trebuie definit altfel, daca stiam cum il defineam eu. Asa el mereu pune valoarea 0.

Cod: Selectaţi tot

Poza:<br>
    <?php
    $uploadpath = 'poza-profil/'; // directory to store the uploaded files
    $max_size = 5000; // maximum file size, in KiloBytes
    $alwidth = 5000; // maximum allowed width, in pixels
    $alheight = 5000; // maximum allowed height, in pixels
    $allowtype = array('jpg', 'jpe'); // allowed extensions

    if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {
    $sepext = explode('.', strtolower($_FILES['fileup']['name']));
    $type = end($sepext); // gets extension

    include('conectare.php');
    $nume = strip_tags($_POST['nume']);       // nume_utilizator
    $id = 0;      // valoare initiala, in caz ca nu e gasit vreun "id"
    $sql = "SELECT `id` FROM `membri` WHERE `nume`='$nume' LIMIT 1";
    // se face selectul si se preia ID-ul din randul returnat:
    //    $id = $row['id'];

    $uploadpath = $uploadpath . $id. '.'. $type; // gets the file name

    list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']); // gets image width and height
    $err = ''; // to store the errors


    // Checks if the file has allowed type, size, width and height (for images)
    if(!in_array($type, $allowtype)) $err .= 'Poza: <b>'. $_FILES['fileup']['name']. '</b> nu are tipul de extensie acceptata - jpg sau jpe.';
    if($_FILES['fileup']['size'] > $max_size*1000) $err .= '<br/>Marimea maxima trebuie sa fie de: '. $max_size. ' KB.';
    if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<br/>Marimea maxima a inaltimii si latimii trebuie sa fie: '. $alwidth. ' x '. $alheight;

    // If no errors, upload the image, else, output the errors
    if($err == '') {
    if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) {
    echo 'Poza incarcata cu succes';
    }
    else echo '<b>Poza nu a putut fi incarcata. Incearca alta poza.</b>';
    }
    else echo $err;
    }
    ?>
    <input type="file" name="fileup" />

MarPlo Mesaje:4343
In exemplu dat ca model in raspunsul anterior trebuie inlocuite comentariile (cele cu "// ..."), cu ceea ce se precizeaza in ele.
Deci, trebuie si in loc de:

Cod: Selectaţi tot

// se face selectul si se preia ID-ul din randul returnat:
//    $id = $row['id'];
sa pui codul care trimite Select-ul la MySQL si preia datele din rezultatul primit.
- Daca nu stii cum, te ajuta lectiile din Cursul PHP de pe site, vezi aicii: Utilizarea bazelor de date folosind PHP.

cadou Mesaje:328
La logare cum fac sa imi preia id-u din baza de date si sa il afisez acolo la imagine ?

Cod: Selectaţi tot

<?php
require_once("conectare.php");

// verifica daca exista date transmise
if (isset($_POST['lnume']) && isset($_POST['lparola'])) {

         // preia datele din formular
         $nume = $_POST['lnume'];
         $parola = md5($_POST['lparola']);

         // formeaza si executa query-ul de select din baza de date
         $query = "SELECT * FROM `membri` WHERE `nume` = '$nume' AND `parola` = '$parola'";
         $result = mysql_query($query) or die ( "Error : ". mysql_error() );

         // verifica daca interogarea MySQL a gasit date valide
         if (!$result || mysql_num_rows($result) < 1) {
                         // daca nu, afiseaza un mesaj de eroare
                         echo "Datele introduse sunt incorecte<br>
                                         ";
         } else {
        
                         // salveaza username-ul si parola in sesiune
                         $_SESSION['nume'] = strtolower($nume);
                         $_SESSION['parola'] = $parola;

                         // afiseaza un mesaj de succes         
                         echo "<meta http-equiv='refresh' content='0; url=/' />";
         }
}
;
if(isset($_SESSION['nume'])) {
echo '<table border=0 background=/imagini/fundal-login.png width=240 height=210><tr><td><center><a href=/iesire.php style="text-decoration:none">
<font size=4 color gray><b>Iesire</b></font></a></center></td><td>Logat</td></tr>
<tr><td><center>
<img src="/poza-profil/aici-id-u-utilizatorului.jpg" border=1 width=100 height=120></center></td><td>
<cine e online></a>
<br>
<a href=/profil.php style="text-decoration:none">Profil</a> <a href=/editare-profil.php style="text-decoration:none">(Editare profil)</a></td></tr></table>
';
}
else {
echo '<table border=0 background=/imagini/fundal-login.png width=240 height=210><tr><td>
<center><font size=4 color=gray><b>Logare</b></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<a href=/inregistrare.php STYLE="TEXT-DECORATION: NONE" title="Inscriete Acum!!!"><font size=3 color=green><b>Inscriete Acum!</b></font></a></center>
<br>
<form action="" method="post">

Utilizator:<br>
<input type=text name=lnume id=lnume><br><br>
Parola:<br>
<input type=password name=lparola id=lparola><br>
<a href=/recuperare-parola.php>Ai uitat parola?</a><br>
<div align=right><input type="submit" name="logare_btn" value="Intra" /></div></form>
</tr></td></table>';
}
?>

archemorus Mesaje:29
Poti sa salvezi in

Cod: Selectaţi tot

 $_SESSION['id']
, id-ul utilizatorului.
Ceva asemanator cu:

Cod: Selectaţi tot

$_SESSION['id']=$row['id'];
Acum te las pe tine sa vezi unde pui instructiunea asta ca sa iti mearga treaba.
Poti sa faci si un SELECT separat pentru asta,daca o sa pui avatarul utilizatorului doar in pagina de profil.Daca vrei sa afisezi avatarul utilizatorului in fiecare pagina a site-ului,poti sa il salvezi in

Cod: Selectaţi tot

 $_SESSION['id']
ca sa nu fie nevoie sa faci in fiecare pagina un SELECT pentru a afla id-ul .

Bafta!
Have a nice day!
Desenele Copilariei http://www.desenele-copilariei.ro
Bancuri Haioase http://www.haiosul.ro

cadou Mesaje:328
De ce imi continua numaratoarea la id auto increment , adica :
eu am 10 inregistrari, apoi aleg sa sterg inregistrarea cu numaru 10, apoi adaug alta inregistrare, mie pe cea noua o numeroteaza cu 11 in loc de 10 , de ce ?

Cod: Selectaţi tot

$uploadpath = 'poza-profil/'; // directory to store the uploaded files
$max_size = 5000; // maximum file size, in KiloBytes
$alwidth = 5000; // maximum allowed width, in pixels
$alheight = 5000; // maximum allowed height, in pixels
$allowtype = array('jpg', 'jpe'); // allowed extensions

if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {
$sepext = explode('.', strtolower($_FILES['fileup']['name']));
$type = end($sepext); // gets extension

$nume = strip_tags($_POST['nume']); // nume_utilizator
$id = 0; // valoare initiala, in caz ca nu e gasit vreun "id"

$sql = mysql_query("SELECT id FROM membri WHERE nume='$nume' LIMIT 1");
$sql = mysql_fetch_assoc($sql);
if(!empty($sql['id']))
{
$id = $sql['id'];
}

$uploadpath = $uploadpath . $id. '.'. $type; // gets the file name

list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']); // gets image width and height
$err = ''; // to store the errors

// Checks if the file has allowed type, size, width and height (for images)
if(!in_array($type, $allowtype)) $err .= 'Poza: <b>'. $_FILES['fileup']['name']. '</b> nu are tipul de extensie acceptata - jpg sau jpe.';
if($_FILES['fileup']['size'] > $max_size*1000) $err .= '<br/>Marimea maxima trebuie sa fie de: '. $max_size. ' KB.';
if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<br/>Marimea maxima a inaltimii si latimii trebuie sa fie: '. $alwidth. ' x '. $alheight;

// If no errors, upload the image, else, output the errors
if($err == '') {
if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) {
echo '';
}
else echo '<b>Poza nu a putut fi incarcata. Incearca alta poza.</b>';
}
else echo $err;
}