Avatar billede freakk Nybegynder
26. oktober 2003 - 01:35 Der er 6 kommentarer og
1 løsning

upload billede

Jeg er ved at modificere det chat script der hedder 1906_MiniChat3-1.. og have at man skal kunne uploade et billede af sig selv på sin egen profil.

selve *user profile* siden ser således ud:

<?
require("config.php");
require("funktioner.php");

$brugerinfo = brugerinfo($_COOKIE[minichat3_id]);
checksession($brugerinfo[sesid]);

$normal = "#eeeeee";
$hover = "#dddddd";

if ($_POST[action] == "update"){
    $free_text = format($_POST[free_text]);
    $free_text = nl2br($free_text);
    $email = htmlentities($_POST[email]);
    $age = format($_POST[age]);

    mysql_query("UPDATE chatuser SET free_text='$free_text',email='$email',age='$age' where id='$brugerinfo[uid]'") or die (mysql_error());
    WriteToRemote("",$brugerinfo[id],"Your userinformation has been updated!");
    header("Location: top.php");
}
?>
<HTML>
<HEAD>
<link rel="stylesheet" type="text/css" HREF="style.css">
</HEAD>
<BODY>
<br>
<?
if ($_GET[action] == "edit"){
?>
<table width="70%" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000" align="center" CLASS="alm-text">
  <tr bordercolor="#84B0DD">
    <td bgcolor="#84B0DD">
      <div align="center"><b>Profile</b></div>
    </td>
  </tr>
  <tr bgcolor="#eeeeee" onMouseOver="style.backgroundColor='<?=$hover;?>';" onMouseOut="style.backgroundColor='<?=$normal;?>';" bordercolor="#eeeeee">
    <td><center><b>- <?=$brugerinfo[nick];?> - </b></center></td>
  </tr>
</table>
<br>
<br>
<form action=profile.php method=post>
    <?    $res = mysql_query("SELECT * FROM chatuser where id='$brugerinfo[uid]'");
        $row = mysql_fetch_array($res);?>
  <table width="70%" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000" align="center" CLASS="normal">
    <tr bordercolor="#84B0DD">
      <td bgcolor="#84B0DD" bordercolor="#84B0DD" width="23%">
        <div align="left"><b>Nick</b></div>
      </td>
      <td bgcolor="#eeeeee" bordercolor="#eeeeee" width="77%">
        <div align="left">
          <?=$brugerinfo[nick];?>
        </div>
      </td>
    </tr>
    <tr bgcolor="#eeeeee" onMouseOver="style.backgroundColor='<?=$hover;?>';" onMouseOut="style.backgroundColor='<?=$normal;?>';" bordercolor="#eeeeee">
      <td width="23%" bordercolor="#84B0DD" bgcolor="#84B0DD">
        <div align="left"><b>Age</b></div>
      </td>
      <td width="77%">
        <div align="left">
          <input type="text" name="age" value="<?=$row[age];?>">
        </div>
      </td>
    </tr>
    <tr bgcolor="#eeeeee" onMouseOver="style.backgroundColor='<?=$hover;?>';" onMouseOut="style.backgroundColor='<?=$normal;?>';" bordercolor="#eeeeee">
      <td width="23%" bordercolor="#84B0DD" bgcolor="#84B0DD"><b>Email adress</b></td>
      <td width="77%">
        <input type="text" name="email" value="<?=$row[email];?>">
      </td>
    </tr>
    <tr bgcolor="#eeeeee" onMouseOver="style.backgroundColor='<?=$hover;?>';" onMouseOut="style.backgroundColor='<?=$normal;?>';" bordercolor="#eeeeee">
      <td width="23%" bordercolor="#84B0DD" bgcolor="#84B0DD" valign="top"><b>Text
        of choise</b></td>
      <td width="77%">
        <textarea name="free_text" rows="4" cols="40"><?=br2nl($row[free_text]);?></textarea>
      </td>
    </tr>
    <tr bgcolor="#eeeeee" onMouseOver="style.backgroundColor='<?=$hover;?>';" onMouseOut="style.backgroundColor='<?=$normal;?>';" bordercolor="#eeeeee">
      <td width="23%" bordercolor="#84B0DD" bgcolor="#84B0DD" valign="top"><b>Update</b></td>
      <td width="77%">
        <input type="hidden" name="action" value="update">
        <input type="submit" name="update" value="Update your information">
      </td>
    </tr>
  </table>
</form>
<? }
elseif ($_GET[id]){
    $remoteses = brugerinfo($_GET[id]);
    $remote_res = mysql_query("SELECT * FROM chatuser where id='$remoteses[uid]'");
    $remote = mysql_fetch_array($remote_res);?>
<table width="70%" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000" align="center" class="normal">
  <tr>
    <td bgcolor="#84B0DD" bordercolor="#84B0DD">
      <div align="center"><b>Userprofile for
        <?=$remote[nick];?></b>
      </div>
    </td>
  </tr>
  <tr>
    <td bgcolor="#eeeeee" bordercolor="#eeeeee">To write something about yourself
      click <a href="profile.php?action=edit">here</a></td>
  </tr>
</table>
<br>
<table width="70%" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000" align="center" class="normal">
  <tr>
    <td bgcolor="#84B0DD" bordercolor="#84B0DD" width="23%"><b>Nick</b></td>
    <td bgcolor="#eeeeee" bordercolor="#eeeeee" width="77%">
      <?=$remote[nick];?>
    </td>
  </tr>
  <tr>
    <td bgcolor="#84B0DD" bordercolor="#84B0DD" width="23%"><b>Age</b></td>
    <td bgcolor="#eeeeee" bordercolor="#eeeeee" width="77%">
      <?=$remote[age];?>
    </td>
  </tr>
  <tr>
    <td bgcolor="#84B0DD" bordercolor="#84B0DD" width="23%"><b>Email</b></td>
    <td bgcolor="#eeeeee" bordercolor="#eeeeee" width="77%">
      <?=$remote[email];?>
    </td>
  </tr>
  <tr>
    <td bgcolor="#84B0DD" bordercolor="#84B0DD" width="23%" valign="top"><b>Text of choise</b></td>
    <td bgcolor="#eeeeee" bordercolor="#eeeeee" width="77%">
      <?=$remote[free_text];?>
    </td>
  </tr>
</table>
<? } ?>
<br>
<div align="center" CLASS="alm-text"><a href=\"java script:top.close()\">Close</a></div>
</BODY>


så det jeg har brug for er et felt/link med *Upload Image*
med:
/browse funktion
/max 30kb size
/et *standart* billede hvis brugeren ikke har uploadet billede
/og evt. admin godkendelse af billedet ( dog ikke vigtigt)

jeg ved ikke om jeg skal bruge mySQL database til at holde styr på billederne eller hvordan?..

Håber i kan hjælpe!!
Avatar billede gustav-olsen Nybegynder
26. oktober 2003 - 01:42 #1
Jeg tror denne her artikkel kan bruges :-)

http://php.delfs.dk/articles/danish/Filer_i_mysql.html
Avatar billede 1409 Praktikant
26. oktober 2003 - 02:58 #2
Man kan godt smide grafik ned i MySQL og hente det frem, men det er både langsomt og belastende for DB'en.
Jeg anbefale at nøjes med selve fil-navnet i DB'en og så filerne selv i et dir.

For noget tid skruede jeg følgende sammen, der er testet og virker, og som bla. tjekker for fil-type (kun jpg er tilladt, men dette kan snildt ændres eller udvides) og størrelse både i pixels-bredde (højde kan selvfølgelig tilføjes, men jeg havde ikke behov for det) og fil.

<!-- picture.php -->
<FORM METHOD="post" ACTION="action.php" enctype="multipart/form-data">
<TEXTAREA COLS="20" ROWS="20" NAME="info" WRAP=virtual></TEXTAREA>
<INPUT TYPE="file" NAME="img" SIZE="70">
<INPUT TYPE="submit" NAME="ins_pict" VALUE="Indsæt billede">



<?PHP
/* ----- action.php -------- */

IF(isset($_POST['ins_pict'])) {
   
    $allowedTypes = array("image/jpeg", "image/pjpeg", "image/jpg"); //allowed types
    $maxFileSize = 30720; //tilladt max-størrelse i bytes
    $maxImgWidth = 200; //tilladt max-bredde i pixels
    $path = "/docs/grafik/billeder/";//*nix-path
    //$temppath = "C:\\Foxserv\\www\\tempupload\\";//win-temppath
    //$path = "C:\\FoxServ\\www\\mysite\\grafik\\billeder\\";//win-path
   
    $info=$_POST['info'];
   
    IF($_FILES['img']['size']> 0) {
        /* -- -- hvis img-input-feltet er ok -- -- */
       
        //Er fil-typen blandt tilladte?
        IF (in_array($_FILES['img']['type'],$allowedTypes)) {
       
            //Er filen-størrelsen under max. tilladt?
            IF ($_FILES['img']['size'] <= $maxFileSize) {
           
                //Hvad er bredden på billedet?
                $size = getImageSize($_FILES['img']['tmp_name']);
                list($foo, $width, $bar, $height) = explode("\"",$size[3]);
               
                //Er billede-bredden under max.?
                IF ($width <= $maxImgWidth) {
                   
                    //Læseligt tidsstempel - tilføjes senere filnavn
                    $timeStamp = date("His_dmy", time());
                   
                    //Overføre billede til specificeret dir - win-funktion
                    //chdir($path);//win-function
                    //$img = stripslashes ($img);//win-funktion
                   
                    move_uploaded_file($_FILES['img']['tmp_name'], $path.$timeStamp.$_FILES['img']['name']) or die("Desværre er der sket en fejl!");
                   
                    //Navneændring til INSERT i db
                    $imgsrc = $timeStamp.$_FILES['img']['name'];
                   
                    //Kobler til og opdatere db
                    MYSQL_CONNECT("din_host,dit_brugernavn,dit_password") OR DIE("Fejl_meddl");
                    MYSQL_SELECT_DB("database_navn") OR DIE("Fejl_meddl");
               
                    $query = MYSQL_QUERY("INSERT INTO billeder (imgsrc, info)" . "VALUES ('$imgsrc', '$info')");
               
                    $mess = "Billede er sat ind!";
                }
                ELSE {
                    //Fejlmedl. hvis bild. breddere end tilladt
                    $mess = "Picture NOT uploaded: It is too wide!";
                }
            }
            ELSE {
                //Fejlmedl. hvis fil over max. tilladt
                $mess = "Picture NOT uploaded: File too big!";
            }
        }
        ELSE {
            //Fejlmedl. hvis fil-format ikke tilladt
            $mess = "Picture NOT uploaded: Wrong file type!";
        }
    }
    ELSE {
        //Fejlmedl. hvis input-felt tomt
        $mess = "Picture NOT uploaded: No file specified!";
    }
    Header("Location:picture.php?mess=$mess");
}
?>
Avatar billede freakk Nybegynder
26. oktober 2003 - 15:18 #3
Gustav -> hvordan får jeg så det til at virke sammen med visning af bruger profil?.. jeg mener.. den henter kun det billede der "tilhører" den bestemte profil ik sandt?..
Skal jeg bare lave et link til siden fra brugeren's profil indstillinger?.. eller kan jeg include "browse"/ "upload" knappen i selve profil indstillingerne?
Avatar billede freakk Nybegynder
26. oktober 2003 - 15:26 #4
og hvad er smartest?..
at gemme billederne i et dir på serveren?
eller at gemme dem i mySQL DB'en ?
Avatar billede freakk Nybegynder
26. oktober 2003 - 16:00 #5
1409 ->
Jeg har lige prøvet at lege med det.. men det ser ikk rigtig ud til at ville virke.. !?

http://www.freakk.frac.dk/file/upload.php
Avatar billede freakk Nybegynder
26. oktober 2003 - 16:44 #6
gustav -> jeg får denne fejl :

Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 12685 is not allowed to access / owned by uid 0 in /web/www/frac/users/freakk/file/action.php on line 37
Desværre er der sket en fejl!
Avatar billede freakk Nybegynder
04. april 2004 - 11:59 #7
lukker nu
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester