Προς το περιεχόμενο

Web Develop


Emiya

Προτεινόμενες αναρτήσεις

Γεια σας, καλησπέρα παιδιά.

Ασχολούμαι αρκετό καιρό με απλά πράγματα στο προγραμματισμό ιστοσελίδων αλλά τώρα που τελείωσα μία σχολή και έμαθα 2 πράγματα παραπάνω γι' αυτόν άρχισα να ασχολούμαι λίγο πιο βαθιά στο θέμα.

 

Ας μπω στο θέμα μας και ας μη βγαίνω OFF Topic.

Θέλω να φτιάξω ένα Upload System.

Πιο αναλυτικά:

Θέλω να φτιάξω ένα .html page (που λογικά θα ενσωματόνετε μέσα σε php) που να βάζεις ένα αρχείο και να το ανεβάζει στον σέρβερ. Μία φόρμα δηλαδή με Checks(που θα είναι φωτό τις οποίες θα βάζουμε σαν μικρά avatar για το αρχείο που θα ανεβάζουμε 2 TextBox και ένα κουμπί για Upload.

Όταν γίνετε το Upload στον σέρβερ θέλω να τοποθετεί αυτό το αρχείο σε μία σελίδα και να είναι έτοιμο για download. Δηλαδή να φτιάχνει μόνο του ένα table με το Όνομα που θα τοποθετήσουμε στο ένα text box και ένα κουμπί για Download και το κουμπί να κάνει linked με το αρχείο.

Επίσης αυτή η σελίδα που θα τοποθετούνται τα link για download να γίνετε και brake σε 1,2,3,4 κ.ο.κ. .

 

Λογικά όλα αυτά γράφοντε σε βάση δεδομένων που βάση δεδομένων έχουμε γτ είμαστε με phpbb3

 

Ευχαριστώ εκ το προτέρων.

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Να με βοηθήσετε να φτιάξω τον κώδικά αν γίνεται...

Το Design και οι φόρμες σε Dreamweaver θα φτιάχτουν αλλά το πως θα κάνει όλο αυτό το περίπλοκο πράγμα;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραία έκανα αυτό το Search βρήκα το Upload system.
Το δοκίμασα κιόλας στο Web Server και ανεβάζει μία χαρά τα αρχεία σε ένα Directory.

Ωραία μέχρι εδώ τώρα αυτό το παρπάνω που θα θέλω να κάνω είναι να κάνει αυτά τα αρχεία "Post" σε μία σελίδα.

 

Με ένα όνομα που θα ορίζω στο Upload (αν γίνεται φυσικά αυτό) πριν το όνομα να τοποθετεί ένα *Avatar που θα ξεχωρίζει τα αρχεία μεταξύ τους που και αυτό θα ορίζεται από τη σελίδα του Upload* και ένα κουμπί για download του αρχείου.

 

*Ένα Drop Box που μέσα σε αυτό να ορίσω κάποιες σταθερές. Π.χ. Αν αυτό που ανεβάσε είναι txt να ορίζει στο Drop Box τη λέξη txt και να είναι συνδεμένο η λέξη txt του drop box με ένα avatar. Όπως είναι τα τορρεντ site δηλαδή που ξεχωρίζουν τι είναι (Games, Program κλπ)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για το upload:

 
 
<html>
<body>


<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>


</body>
</html>

upload_file.php

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";


    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

Εσύ για να "Τραβάς" από κάπου τα posts(προφανώς από κάποια βάση) θα πρέπει να κάνεις το ερώτημα που θες στην βάση και το αποτέλεσμα να το εμφανίζεις στο site σου(με ή χωρίς pagination).

 

Για να συνδεθείς στην βάση θα γράψεις κάτι αντίστοιχο με το παρακάτω:
 

<?php
session_start();
   include( 'function.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

		/* thumbnail sizes */
		$sizes = array( 200 => 200);
		/* resize image */
		foreach ($sizes as $w => $h) {
			resize($w, $h);
			}
	move_uploaded_file($_FILES["file"]["tmp_name"],"image_gallery/big/" .$_FILES["file"]["name"]);

}

$host = "localhost";
$username = "root";
$password = "";
$db_name = "news";

mysql_connect("$host","$username","$password") or die("Cannot Connect.");
mysql_select_db("$db_name") or die("Cannot connect to database");

$mysqli = new mysqli("$host","$username","$password","$db_name");  
?>

Επειδή είναι λίγο ψάξιμο από πλευράς μου να βρω τα παλιά αρχεία που το είχα κάνει, πες μου αν σε ενδιαφέρουν όλα τα υπόλοιπα μην τα ψάχνω τσάμπα.

 

Θεωρητικά να πω ότι πρέπει να σκεφτείς τα εξής:

 

1) όταν κάποιος θα κάνει ένα post θα πρέπει εσύ με κάποιον τρόπο να αποθηκεύεις σε ξεχωριστά πεδία αυτά που έγραψε(τίτλος, άρθρο, όνομα φωτογραφίας, ώρα, όνομα χρήστη κλπ)

Π.χ

$name = $_POST['name'];
$comment = $_POST['comment'];
$title = $_POST['title'];
$fileName = $_FILES['file']['name'];
$tmpName  = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileType = $_FILES['file']['type'];

$querymsg="INSERT INTO comments (`name`,`title`,`comments`,`image`) VALUES ('".$name."','".$title."','".$comment."','".$fileName."');";
 
 

2)μετά θα πρέπει στην σελίδα που θες να εμφανίσεις όλα τα posts, να κάνεις πρώτα ένα ερώτημα στην βάση της φάσης

 $SQL = "SELECT * FROM comments  ORDER BY Id desc

και μετά κάνεις μια while με mysql_fetch_assoc($SQL) (με παράμετρο το ερώτημα της sql)
π.χ
 

while ($row = mysql_fetch_assoc($result)) {
    echo $row["name"];
    echo $row["title"];
    echo $row["comments"];
    echo $row["image"];
}

Προφανώς τα παραπάνω μπορείς να τα βάλεις μέσα σε html divs και έτσι να "σχεδιάσεις" όλη την σελίδα σου άρθρο άρθρο.

Σίγουρα αν δε το έχεις ξανακάνει να δυσκολευτείς αλλά μόλις το καταφέρεις θα δεις ήταν εύκολο :D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Λογικά όλο αυτό που έγραψες εδώ πιθανόν να είναι αυτό που θέλω.

 

Να διευκρινήσω τη σελίδα αυτή θα τη βλέπουν μόνο εξουσιοδωτιμέτα άτομα (Δηλαδή άτομα τα οποία θα ξέρουν το path για να μπουν).

Στην προκειμένη περίπτωση έχουμε ένα γκρουπ που κάνουμε υπότιτλους για anime και τα κάνουμε upload σε τορρεντ μορφή. Και κάποια πράγματα δε χρειάζοντε όπως ας πούμε size γιατί θα γίνονται μόνο τορρεντ upload οπότε δε ξεπερνανε τα 10 με 20 Kb.

 

Την βάση δεδομένων την έχω έτοιμη απλά πρέπει να φτιάξω ειδικά tables έτσι;

 

Και φαντάσου δηλαδή ότι το τορρεντ που θα κάνουμε upload να δημιουργεί ένα div σε μία άλλη html σελίδα που να έχει ένα thumbnail

του anime που ετοιμάσαμε τους υπότιτλους τον τίτλο και ένα βελάκι για Download. Δηλαδή σαν τόρρεντ site. Θα προσπαθήσω να ψαχτώ λίγο με αυτό που μου έδωσες και θα ποστάρω αν τα κατάφερα ή όχι.

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

πάρε και το resize() για να δημιουργεις thumbnails την ωρα του upload.
 

<?php
/**
 * Image re-size
 * @param int $width
 * @param int $height
 */
function resize($width, $height){
	/* Get original file size */
	list($w, $h) = getimagesize($_FILES['file']['tmp_name']);
	/* Calculate new image size */
	$ratio = max($width/$w, $height/$h);
	$h = ceil($height / $ratio);
	$x = ($w - $width / $ratio) / 2;
	$w = ceil($width / $ratio);
	/* set new file name */
	$path = 'image_gallery/'.$_FILES['file']['name'];
	/* Get binary data from image */
	$imgString = file_get_contents($_FILES['file']['tmp_name']);
	/* create image from string */
	$image = imagecreatefromstring($imgString);
	$tmp = imagecreatetruecolor($width, $height);
	imagecopyresampled($tmp, $image,
  	0, 0,
  	$x, 0,
  	$width, $height,
  	$w, $h);
	/* Save image */
	switch ($_FILES['file']['type']) {
		case 'image/jpeg':
			imagejpeg($tmp, $path, 100);
			break;
		case 'image/png':
			imagepng($tmp, $path, 0);
			break;
		case 'image/gif':
			imagegif($tmp, $path);
			break;
		default:
			exit;
			break;
	}
	return $path;
	imagedestroy($image);
	imagedestroy($tmp);
}
?>
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οι φωτογραφίες των thumbnails θέλω να είναι σταθερές σε έναν φάκελο.

Αν πχ στη σελίδα upload έχω ένα Drop Box με κάποιες σταθερές μέσα π.χ. "Greek-Anime" να μου βάζει αυτόματα μία φωτό που έχω ορίσει εγώ για το "Greek-Anime"

κατάλαβες τι θέλω;

 

 

Επίσης το php script με τα στοιχεία της βάσης δεδομένων που το βάζω εκεί το έχω χάσει... :/

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ε αυτό είναι εύκολο.

 

Σε κάθε σελίδα θα έχεις διαφορετικό avatar?αν ναι τότε π.χ στην σελίδα Greek-anime θα βάλεις σε κάθε post να παίρνει εικόνα από το path που εχεις βαλει σταθερά εσύ την εικόνα 

 

<img src="uploads/greek-anime.jpg">

To php αρχείο που κάνει connect με την βάση το φτιάχνεις μια φορά και το κάνεις κάθε φορά incluse στην αρχή της σελίδας ώστε πρώτα πρώτα να συνδεθεί και μετά κάνεις ότι θες.
 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Λοιπόν σαν index.php έφτιαξα το παρακάτω:
 

<?php
if (isset($_FILES['torrents'])) {
    $errors = array () ;
    $allowed_ext = array ('torrent');
    
    $file_name = $_FILES['torrents']['name'];
    $file_ext = strtolower (end (explode('.', $file_name )));
    $file_tmp = $_FILES['torrents']['tmp_name'];
    
    if (in_array($file_ext, $allowed_ext) === false) {
        $errors[] = 'Extension not allowed';
        
    }
    
    if (empty ($errors)) {
        if (move_uploaded_file ($file_tmp, 'torrents/'.$file_name)) {
        echo 'File Uploaded';
        }
    } else {
    foreach ($errors as $error) {
    echo $error;
    }
    }

}
?>

<form action="" method="POST" enctype="multipart/form-data">
        <p>
            <input type="file" name="torrents" />
            <input type="submit" value="Upload" />
        
        </p>


</form>

Με τον παραπάνω κώδικα κάνει κανονικά Upload τα τορρεντ στο path "torrents/ "

Τώρα θέλω να με βοηθήσεις στη συνέχεια γτ όμως σου είπα είμαι πολύ πίσω στον προγραμματισμό ιστοσελίδων:

Τώρα θέλουμε να παίρνουμε αυτά τα τόρρεντ και να να τα τοποθετεί με μία τέτοια σειρά:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tracker</title>
</head>

<body>
<div align="center">
  <table width="867" height="52" border="0">
    <tr>
      <td width="42" rowspan="2"><img src="../dxd.png" width="42" height="42" /></td>
      <td height="23">{torrent_name}</td>
      <td width="47" rowspan="2"><div align="center"><img src="../download.png" width="28" height="27" /></div></td>
    </tr>
    <tr>
      <td width="773" height="23"> </td>
    </tr>
  </table>
  <p> </p>
</div>
</body>
</html>

Όπου η φωτογραφία που στην προκειμένη περίπτωση την έχω ως dxd.png να ορίζεται όπως εσύ από σταθερά αβαταρ. Όταν την τιμή να την ορίζω από την σελίδα Upload με κάποιο DropBox ή με κάποιο Check ίσως... Δε γνωρίζω.

Στο {torrent_name} να μπαίνει απλά το όνομα του τορρεντ.

και στο download.png να ορίζεται το path για να γίνει download το path.

Λογικά πρέπει να πάω να φτιάξω ένα table στη βάση δεδομένων μου με τα εξείς:
 

Πρωτεύων κλειδί
Torrent_Name
Torrent_Path


Και ακόμα ένα Table τα οποία πρέπει να έχει τα αβαταρ για να ενώνεται με το dropbox.
 

Πρωτεύων κλειδί
Avatar_Path

Αν τα λέω σωστά.
 

Θα μπορούσαμε να το φτιάξουμε σιγά σιγά όλο, μαζί;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...