Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Muistia kuluttamaton pastebin

janijohannes [18.05.2009 13:57:05]

#

Eli muistia kuluttamaton pastebin.

Koodia ei ole kommentoitu mutta on se aikas selvää...

Demo osoitteessa http://janijohannes.hirmu.net/tavaraa/jotain/kpaste/

EDIT: Ääh... Tuli bugi...

index.php

<?php ob_start(); ?>
<html>
	<head>
		<title>fpaste</title>
	</head>
	<body>
		<?php
			class MySQLc { // Mukavuudenhaluisena tein tälläisen...
				var $con=null;
				var $s=0;
				var $r=0;
				function MySQLc($host,$name,$pass,$db="") {
					if ($db=="") $db=$name;
					$this->con=mysql_connect($host,$name,$pass);
					mysql_select_db($db,$this->con); }

				function DB($db) {
					mysql_select_db($db,$this->con); }

				function Query($query) {
					$this->s=mysql_query($query,$this->con); }

				function fetch_object() {
					return $this->r=mysql_fetch_object($this->s); }

				function ID() {
					return mysql_insert_id($this->con); }

				function Disconnect() {
					mysql_close($this->con); }
			}
			$dir='tavaraa/';
			$c = new MySQLc("localhost","***","***");
			$c->Query('CREATE TABLE IF NOT EXISTS fpaste (filu TEXT, nimi TEXT, size INTEGER, id INTEGER AUTO_INCREMENT UNIQUE KEY)');
			if (isset($_POST['filu'])) {
				$f=$_FILES['filu'];
				$name=$dir.$f['name'];
				move_uploaded_file($f['tmp_name'],$name);
				$c->Query("INSERT INTO fpaste (filu, nimi, size) VALUES ('".file_get_contents($name)."', '".$f["name"]."', '"
							.$f["size"]."')");
				unlink($name);
				$id=$c->ID();
				$ech='<a href="?i='.$id.'">?i='.$id.'</a>'; }
			elseif (isset($_GET['i'])) {
				$id=$_GET['i'];
				$c->Query("SELECT * FROM fpaste");
				while ($c->fetch_object()) {
					if ($c->r->id==$id) {
						ob_end_clean();
						header("Content-Description: File Transfer");
						header("Content-Type: application/octet-stream");
						header("Content-Disposition: attachment; filename=\"" .
								$c->r->nimi . "\";");
						header("Content-Transfer-Encoding: binary");
						header("Content-Length: ".$c->r->size);
						file_put_contents($c->r->nimi,$c->r->filu);
						readfile($c->r->filu);
						unlink($c->r->filu);
						die();
					}
				}
			}
			else {
				$ech='<form action="?" method="post" enctype="multipart/form-data"><input type="hidden" name="filu" value="1" />
						Tiedosto: <input type="file" name="filu" /> <input type="submit" value="OK" /></form>';
			}
			$c->Disconnect();
			ob_end_clean();
			echo $ech;
		?>
	</body>
</html>

tsuriga [19.05.2009 13:54:18]

#

Jonniverran sekava, ei tästä hirviästi kyllä irti saa. Bufferoinnista pääsis helposti eroon kunhan siirtäs toiminnallisuuden heti sivun alkuun ja jättäs tulostelut sitten myöhemmälle kuten tässä nyt jo osin tehdäänkin.

Metabolix [06.06.2009 08:31:55]

#

Muistia kuluttamaton? Kenen muistia?

janijohannes [25.06.2011 12:01:56]

#

Kirjottelin tämän silloin kun en mistään mitään ymmärtänyt. Näin jälkeenpäin en enää paljon saa tuosta selvää. :D

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta