PHP: Formular

Fragen zum Thema HTML, JavaScript, PHP
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

PHP: Formular

Beitrag von naums » Di Jul 13, 2010 9:17 pm

Es handelt sich um folgenden Code:

index.php: (ausschnitt)

Code: Alles auswählen

echo('<center><TABLE background="'.$mainbg.'" width="800px"><TR><TD valign="top">
<center><H1><U>Ein Video Hochladen</U></h1></center>
<form action="newVid.php" method="post" enctype="multipart/form-data">
<pre>
<P>Name: <BR />   <input type="text" name="name" value="Videotitel"  id="name" onclick="clearVidname()" size="95"></P>
<P>Zu folgendem Spiel: <BR />   <select name="game" size="1">');
    $query="SELECT id, name FROM `game` ORDER BY `name` ASC";
    $abfrage=$db->query($query, MYSQLI_STORE_RESULT);
    while ($res=$abfrage->fetch_assoc())
    {
        echo('
	<option value="'.$res["id"].'">'.$res["name"].'</option>');
    };
    echo('</select></P>
<P>Quelle: (falls vorhanden)<BR />   <input type="text" name="quelle" value="Quelle" id="que" onclick="clearQUE()" size="95"></P>
<P>Datei: <BR />   <input type="file" name="vid" size="80"></P>
<input type="submit" value="Hochladen" name="submit">
<small>Das Hochladen von Videos kann besonders lange dauern, da Videos oft sehr groß sind. Brechen sie den Prozess keinesfalls ab.<BR />
Bitte laden sie nur .mp4 Videos hoch. Video(Bitrate: bis 1800Kbit/s; Auflösung: bis 640:480); Audio(Bitrate: 128Kbit/s).</small>	
</pre></form></TD></TR></TABLE></center>');
newVid.php:

Code: Alles auswählen

<?php
  if (is_array($_POST))
  {
      $post=$_POST;
  }
  else
  {
      $post=$HTTP_POST_VARS;
  };
  if (array_key_exists("name", $post))
  {
      $name=$post["name"];
  }
  else
  {
      $name=NULL;
  };
  if (array_key_exists("quelle", $post))
  {
      $Vidquelle=$post["quelle"];
	  if ($Vidquelle=="")
	  {
	      $Vidquelle=NULL;
	  };
  }
  else
  {
      $Vidquelle=NULL;
  };
  if (array_key_exists("game", $post))
  {
      $game=$post["game"];
  }
  else
  {
      $game=NULL;
  };
  if (is_array($_FILES))
  {
      $files=$_FILES;
  }
  else
  {
      $files=$HTTP_FILES_VARS;
  };
  if (array_key_exists("vid", $files))
  {
      $vid=$files["vid"];
  }
  else
  {
     $vid=NULL;
  };
  if (is_array($_SERVER))
  {
      $server=$_SERVER;
  }
  else
  {
      $server=$HTTP_SERVER_VARS;
  };
    
	die (print_r($post));
	
if ($name!=NULL and $vid!=NULL and $game!=NULL)
{
    $db=new mysqli("localhost", "naums", "letsfetz", "oettinger-games");
	$query="SELECT id FROM `game` WHERE `id`=$game";
	$abfrage=$db->query($query, MYSQLI_STORE_RESULT);
	$a=0;
	while ($res=$abfrage->fetch_assoc())
	{
	    $a++;
	};
	if ($a<1)
	{
	   echo('<script language="javascript">location.href="index.php?position=new&form=vid";</script>');
	};
	
	$query="SELECT id FROM `vid` ORDER BY `id` ASC";
	$abfrage=$db->query($query, MYSQLI_STORE_RESULT);
	$a=0; $b=false; $c=0;
	while ($res=$abfrage->fetch_assoc())
	{
	    $a++; 
		if ($a!=$res["id"] and $b==false)
		{
		    $b=true;
			$c=$a;
		};
	};
	if ($b==false)
	{
	    $c=$a;
		$c++;
	};
	
	$quelle=$vid["tmp_name"];
	$between=explode("newVid.php", $server["SCRIPT_NAME"]);
	$ziel=$server["DOCUMENT_ROOT"].$between[0].'vid/'.$c.'.mp4';
	$filename='vid/'.$c.'.mp4';
	
	if (copy($quelle, $ziel))
	{
	    $query="INSERT INTO `vid` (id, name, src, game_id, quelle, system, width, height) VALUES ($c, '$name', '$filename', $game, '$Vidquelle', 'PC', 1,1)";
	}
	else 
	{
	    echo('<script language="javascript">location.href="index.php?position=new&form=vid";</script>');
	};
}
else
{
    echo('<script language="javascript">location.href="index.php?position=new&form=vid";</script>');
};
?>
Problem: $post ist NULL. Die einzige Ausgabe die stattfindet ist "Array( ) 1". Warum wird $_POST nicht mit Inhalt gefüllt?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP: Formular

Beitrag von Xin » Do Jul 15, 2010 10:51 pm

naums hat geschrieben:Problem: $post ist NULL. Die einzige Ausgabe die stattfindet ist "Array( ) 1". Warum wird $_POST nicht mit Inhalt gefüllt?
Ich bin jetzt kein PHP Experte mehr, aber kann es sein, dass $post nach der schließenden Klammer verworfen wird?

Hast Du mal geprüft, ob $_POST leer ist (print_r( $_POST ); ?)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP: Formular

Beitrag von naums » Fr Jul 16, 2010 12:34 pm

$_POST is leer. $HTTP_POST_VARS ist nicht definiert.

nur eigentlich müssten in $_POST die Werte drinne sein. und $post wird nach der geschweiften Klammer nicht verworfen, genauso mache ich das auch bei ettlichen andren formularen...
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: PHP: Formular

Beitrag von Kerli » Fr Jul 16, 2010 2:45 pm

naums hat geschrieben:$_POST is leer. $HTTP_POST_VARS ist nicht definiert.
Dann installiere dir einmal Tamper Data und schau ob der Browser auch alles so abschickt wie du es dir erwartest.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
bbbl
Beiträge: 80
Registriert: So Jul 19, 2009 12:04 am

Re: PHP: Formular

Beitrag von bbbl » Fr Jul 16, 2010 7:57 pm

naums hat geschrieben:$_POST is leer. $HTTP_POST_VARS ist nicht definiert.
$HTTP_POST_VARS gilt schon länger als veraltet und sollte daher auch nicht mehr verwendet werden.. auch macht es deinen Code nicht gerade übersichtlicher. Du kannst übrigens das Prüfen ob $_POST oder eine andere Variable existiert auch einfach so abfragen:

Code: Alles auswählen

if ( ! $_POST )
...

if ( ! $_POST['name'] )
...
Hat sich mittlerweile so eingebürgert und ist imho wesentlich übersichtlicher. Ansonsten, da wir ja alle nicht deine Datenbank zur verfügung haben, wäre es vielleicht sinnvoll mal einen Testcase bereitzustellen, der nur aus dem Formular und der verarbeitenden Datei besteht, und den Fehler reproduziert - vielleicht findest du auf die Weise schon selbst den Fehler.

Dominik
Beiträge: 381
Registriert: Mo Jul 07, 2008 9:39 pm

Re: PHP: Formular

Beitrag von Dominik » Sa Jul 17, 2010 7:02 am

Mache die Weiterleitung per HEADER und PHP


Ansonsten sind da sehr viele unnötigen Sachen drin, das thema sicherheit hatten wir dir auch schon mal erklärt
Rechtschreibefehler sind gewollt und dienen der Unterhaltung

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP: Formular

Beitrag von Xin » Sa Jul 17, 2010 9:18 am

Dominik hat geschrieben:Mache die Weiterleitung per HEADER und PHP
Link oder Beispiel. Bitte keine Hinweise in der Form "google Dir mal...".

Code: Alles auswählen

header( "Location: http://www.proggen.org" );
Hierfür darf noch kein Zeichen (auch kein Newline!) verschickt worden sein.
Dominik hat geschrieben:Ansonsten sind da sehr viele unnötigen Sachen drin, das thema sicherheit hatten wir dir auch schon mal erklärt
Welche unnötigen Sachen? Er wird das sicher nicht so schreiben, weil er es besser weiß.
Was die Sicherheit angeht: Link?

Nach Möglichkeit Anfragen im technischen Bereich so beantworten, dass jemand, der die gleiche Frage hat und nicht das ganze Forum gelesen hat, seine Antwort findet.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP: Formular

Beitrag von naums » Sa Jul 17, 2010 11:45 am

also: header is ja sicher ne dolle sache, aber ich bin für Javascript, ganz einfach deswegen, weil ich mich dran gewöhnt habe, und ich mir keine gedanken machen muss, ob der Header nu schon geschickt wurde.

Zum Thema: Kann es sein, dass wenn ich in der PHP Ini nur Dateien erlaube die nicht größer als 10MB sind, und eine größere schicken will, $_POST einfach leerbleibt?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP: Formular

Beitrag von Xin » Sa Jul 17, 2010 11:56 am

naums hat geschrieben:also: header is ja sicher ne dolle sache, aber ich bin für Javascript, ganz einfach deswegen, weil ich mich dran gewöhnt habe, und ich mir keine gedanken machen muss, ob der Header nu schon geschickt wurde.
Der Vorteil vom Header ist, dass keine Website geladen werden muss, dass kein JavaScript ausgeführt werden muss, dass der Browser grundsätzlich nichtmals JavaScript eingeschaltet haben muss.
Es gibt nur die Info, dass der Browser jetzt woanders suchen soll.
naums hat geschrieben:Zum Thema: Kann es sein, dass wenn ich in der PHP Ini nur Dateien erlaube die nicht größer als 10MB sind, und eine größere schicken will, $_POST einfach leerbleibt?
Ich könnte mir vorstellen, dass in der PHP.ini schon drinsteht, dass PHP gar keine 10MB RAM bekommt, was dazu führt, dass die Daten überhaupt nicht in die Speicherverwaltung des Interpreters passen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Dominik
Beiträge: 381
Registriert: Mo Jul 07, 2008 9:39 pm

Re: PHP: Formular

Beitrag von Dominik » Sa Jul 17, 2010 12:03 pm

Nunja ein Forum gibt Hilfestellungen ich brauch keinen code posten, die Funktion bzw befehl kann er ruhig googlen, sind ja hier kein nachschlagwerk

Ansonsten "Mysqlinjection" beachten

Code: Alles auswählen

if (array_key_exists("name", $post))
  {
      $name=$post["name"];
  }
if (is_array($_SERVER))
  {
      $server=$_SERVER;
  }
$_Server variablen sind eigentlich IMMMER vorhanden , für die anderen sachen lieber isset/empty nehmen ist um einiges einfacher



mfg
Rechtschreibefehler sind gewollt und dienen der Unterhaltung

Antworten