使用PHP显示用户上传的个人资料照片

时间:2012-11-02 20:01:01

标签: php

我有一个网站,用户上传他们的个人资料图片,我已将图片存储在一个文件夹中,他们的链接反映在数据库中 如何在我必须展示照片的地方显示该链接?

上传照片的代码

    define ("MAX_SIZE","1000"); 
    function getExtension($str)
    {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
    }

    $errors=0;
    $image=$_FILES['image']['name'];

    if ($image) 
    {

$filename = stripslashes($_FILES['image']['name']);
$extension = getExtension($filename);
$extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") 
    && ($extension != "gif")&& ($extension != "JPG") && ($extension != "JPEG") 
    && ($extension != "PNG") && ($extension != "GIF")) 
{
    echo '<h3>Unknown extension!</h3>';
    $errors=1;
}
else
{
    $size=filesize($_FILES['image']['tmp_name']);

    if ($size > MAX_SIZE*1024)
    {
        echo '<h4>You have exceeded the size limit!</h4>';
        $errors=1;
    }

    $image_name=time().'.'.$extension;
    $newname="photo/".$image_name;

    $copied = copy($_FILES['image']['tmp_name'], $newname);
    if (!$copied) 
    {
        echo '<h3>Copy unsuccessfull!</h3>';
        $errors=1;
    }
    else echo '<h3>uploaded successfull!</h3>';

    //mysql_query("insert into tutor (photo) values('".$newname."')");
    $myphoto= ".$newname.";
}

插入代码

    $mysqli = new mysqli("localhost", "***", "***", "***");
    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " .                         $mysqli->connect_error;
    }

    /* Prepared statement, stage 1: prepare */
    if (!($stmt = $mysqli->prepare("INSERT INTO `table` (`photo` ) VALUES (  ?)"))) {
        echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
    }

    /* Prepared statement, stage 2: bind and execute */

    if (!$stmt->bind_param('s',$myphoto )) {
        echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
    }

    if (!$stmt->execute()) {
        echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    }

1 个答案:

答案 0 :(得分:0)

您需要以某种方式将用户链接到图片,例如向您的users表添加外键,然后将当前用户ID与图片一起插入。

在您的上传/插入页面中,您最终会得到与

类似的内容
// Assuming you're saving your logged in user's data in sessions
$current_user_id = $_SESSION['user_id'];
// Assuming you already have a $mysqli variable with an open connection
$mysqli->exec("INSERT INTO picture_table SET user = $current_user_id, picture = '$picture_file';");

然后,在您的个人资料/显示页面上,您必须使用类似于

的内容从数据库中获取它
// Assuming you already have a $mysqli variable with an open connection
$q = $mysqli->query("SELECT picture WHERE user = $current_user_id");
$row = $q->fetch_object();

printf('<img src="http://yoursite.com/yourpath/%s"  />', $row->picture);