# variable ueber php in txt auf server schreiben



## ssczepanski (19. Jul 2016)

Hallo Leute,

bin neu hier im Forum und beschäftige mich auch erst seit zwei tagen mit java.
ich versuche momentan den wert eines Sliders (der kann von 0 bis 99 gehen), über den Weg einer zwischenspeicherung in einer php datei, in eine txt datei zu schreiben die auf dem webserver liegt. Den Slider habe ich von jquery.com. Code den ich zum eigentlichen slider code dazu geschrieben habe sieht man hier in grün. In die Txt wird aber aktuell nicht der Wert der gesendeten Variable geschrieben, sondern seltsamerweise immer nur der Variablen name, bzw das, was ich hier eingebe:
xmlhttp.open("GET", "steuerung_out.php?wert=cam_hoehe", true);

-------------------------------------------------------------------
Hier das ganze:

hier meine html datei mit dem java script:
<!doctype html>
<html lang="de">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Slider - Vertical slider</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
  <script>

  $( function() {
    $( "#slider-vertical" ).slider({
      orientation: "vertical",
      range: "min",
      min: 0,
      max: 100,
      value: 0,
      stop: function( event, ui ) {
        $( "#amount" ).val( ui.value );
  cam_hoehe= $( "#sliderId" ).slider( "value" );  // schreibe ich hier wirklich den Wert des Sliders (also #amount) in die Variable???



   var xmlhttp;
if (window.XMLHttpRequest)
 {
// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
alert('Cam-Hoehe gesendet')
 }
}


xmlhttp.open("GET", "steuerung_out.php?wert=cam_hoehe", true);


xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send();


'x=' + encodeURIComponent(arg0)
      }
    });
    $( "#amount" ).val( $( "#slider-vertical" ).slider( "value" ) );
  } );
  </script>
</head>
<body style="background-color:darkred;">
<center><img src="raspionfire.png" alt="RPi-on-fire" style="width:80px;height:100px;"></center>

<center><p>
  <label for="amount">Robo-Cam H&ouml;he:</label>
  <input type="text" id="amount" readonly style="border:0; color:#000000; font-weight:bold;">
</p></center>

<center><div id="slider-vertical" style="height:100px;"></div></center>


</body>
</html>


---------------------------------------------------------------------------------------------

hier die php:
<?php
$myFile = "cam_hoehe.txt";

$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_GET["wert"];
fwrite($fh, $stringData);
fclose($fh);
?> 

-------------------------------------------------------------------------------------------

und hier der inhalt in der txt datei:
cam_hoehe  //hier gibt er den Variablennamen aus. 




hoffe ihr könnt mir helfen. Vielen dank schonmal für eure zeit!


----------



## Tobse (20. Jul 2016)

Zunächst zwei Dinge:

1. Benutze Code-Tags
2. *Java != JavaScript*  !!!111einself

Dein Problem ist diese Zeile:

```
xmlhttp.open("GET", "steuerung_out.php?wert=cam_hoehe", true);
```
Du übergibst hier keine Variable, sondern einen festen String. JavaScript hat (zum Glück ) keine Stringinterpolation.

```
xmlhttp.open("GET", "steuerung_out.php?wert=" + cam_hoehe, true);
```

Jetzt noch ein paar andere Tipps:
1. Du hast schon jQuery auf der Seite, benutze auch die Ajax-Funktion von jQuery. Dieser XMLHttpRequest Mist war schon immer lästig und wird es bleiben.
2. Eingabevalidierung!!!! Das PHP-Script, welches du da aufgesetzt hast, ist aus einer Security-Perspektive weiter offen als ein Scheunentor. cam_hoehe ist eine Zahl in einem bestimmten Wertebereich. Prüfe das auf PHP-Seite. Aktuell kann man einen Roman in deine cam_hoehe.txt schreiben. Und an anderer Stelle rechnest du nicht mit einem Roman, sondern einer Zahl.... Und baue wenigstens einen Passwortschutz in deine Anwendung ein damit nicht jeder x-beliebige Dateien auf deinem Server beschreiben kann.


----------

