SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 30.12.2007, 13:31:16
cryp0r cryp0r ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 3
$_POST wird nicht übergeben

Hallo zusammen. Ich habe hier ein kleines bis mittelschweres Problem. Und zwar übergebe ich per Post daten an eine PHP, diese kommen da allerdings nie an. Ich mach mal den Code mit rein, evtl. hat einer ne Idee, wo mein Fehler sitzt. Vielen Dank.

Der Link, über den die Daten übertragen werden sieht so aus:

Code:
http://meinehomepage.de/datei.php?user=User%20Name&free=1
Code:
<?php
error_reporting(E_ALL);

Get POST variables and put into superglobal array
$p_data = implode('', file('php://input'));
$p_data = explode('&', $p_data);

foreach ($p_data as $p_val) {
    $d_parts = explode('=', $p_val);
    $_POST[$d_parts[0]] = urldecode($d_parts[1]);
}

 $test = "Test";

$name = $_POST['user'];
$free = $_POST['free'];

$host = "localhost";
$user = "**********";
$pass = "**********";
$dbname = "************";

//Zum testen
echo $test;
echo $name;
echo $free;
//----------

@mysql_connect("$host", "$user", "$pass");
@mysql_select_db("$dbname");

$abfrage="
SELECT free
FROM `jos_users`
WHERE name = $name";
$abfrage_ergebniss = mysql_query($abfrage);

echo $abfrage_ergebniss;

$update_free = $abfrage_ergebniss + $free;

$sql="UPDATE jos_users
      SET free = '$update_free'
      WHERE name = '$name'";
$result=mysql_query($sql);

?>

Geändert von cryp0r (30.12.2007 um 13:34:27 Uhr) Grund: Nachtrag
Mit Zitat antworten
  #2  
Alt 30.12.2007, 13:58:02
bernhard3105 bernhard3105 ist offline
Anfänger
 
Registriert seit: Dec 2004
Beiträge: 66
AW: $_POST wird nicht übergeben

Daten die in der URL übergeben werden wie bei dir:

http://meinehomepage.de/datei.php?us...%20Name&free=1

musst du mit $_GET auslesen und nicht mit $_POST.
Mit Zitat antworten
  #3  
Alt 30.12.2007, 14:04:19
cryp0r cryp0r ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 3
AW: $_POST wird nicht übergeben

Hm, hab ich auch schon probiert.

Allerdings wird mir nichtmal

die Variable $test ausgegeben, obwohl ich die ja fest angebe?
Mit Zitat antworten
  #4  
Alt 30.12.2007, 14:15:18
cryp0r cryp0r ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 3
AW: $_POST wird nicht übergeben

Ok, mit $_GET gehts doch, sorry. Allerdings wird nun in der DB der wert free nicht addiert, so wie er sollte.
Mit Zitat antworten
  #5  
Alt 30.12.2007, 16:17:31
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: $_POST wird nicht übergeben

"$variable" ist überflüssig, einfach nur $variable, ohne Anführungszeichen.

Du testet das Zustandekommen der Datenbankverbindung nicht ab und Dank den @ vor den Funktionen wird nicht mal mehr eine Warnung ausgegeben. Sollte man ändern.

Das Skript ist anfällig für SQL Injections, auch in einer nicht-feindlich gesinnten Umgebung, da muss keine böse Absicht dahinter stecken. http://en.wikibooks.org/wiki/Program...:SQL_Injection

$name ist doch bestimmt eine Zeichenkette. Zeichenketten müssen auch für den Mysql Server in Anführungzeichen gesetzt werden. WHERE name=Anton ist ungültig*, es muss als WHERE name='Anton' beim Mysql Server ankommen.
(edit: * bzw deutet der Mysql Server Anton dann als Feldnnamen und wieviele Tabellen haben schon ein Feld namens Anton? ;))

mysql_query() liefert keine Zahl oder Zeichenkette, es liefert eine Ergbnisresource. Mittels dieser Resource kann man auf die Datensätze und die einzelnen Werte zugreifen. Dafür muss man allerdings eine Funktion aufrufen, wie zum Beispiel mysql_fetch_array oder mysql_result.

Das SELECT ist überflüssig. Du musst den Wert nicht abholen, da Du das im UPDATE in einem machen kannst.

Die Parameter werden jetzt also doch per GET übergeben? D.h. der ganze Hokuspokus
Code:
Get POST variables and put into superglobal array
$p_data = implode('', file('php://input'));
$p_data = explode('&', $p_data);

foreach ($p_data as $p_val) {
    $d_parts = explode('=', $p_val);
    $_POST[$d_parts[0]] = urldecode($d_parts[1]);
}
(als könnte php nicht selbst POST Daten parsen ;)) kann ersatzlos gestrichen werden?



PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'true);

//Zum testen
$test "Test";
echo 
"<pre class=\"debug\">\n";
echo 
'test: 'var_dump($test);
echo 
'_GET: 'var_dump($_GET);
echo 
"</pre>\n";
//----------
if(!isset($_GET['user'],$_GET['free'])) {
  echo 
'Parameter user oder free fehlt';
  die();
}

$host "localhost";
$user "**********";
$pass "**********";
$dbname "************";
$mysql = @mysql_connect($host$user$pass) or die(mysql_error());
@
mysql_select_db($dbname$mysql) or die(mysql_error($mysql));

$sql="UPDATE
  jos_users
SET
  free = free + " 
intval($_GET['free']) . "
WHERE
  name='"
mysql_real_escape_string($_GET['user'], $mysql) . "'";

echo 
'<p class="debug">' htmlentities($sql) . "</p>\n";
$result=mysql_query($sql$mysql) or die(mysql_error($mysql));
echo 
mysql_affected_rows($mysql) . ' Datensätze wurden aktualisiert';
__________________
Wat der Bauer nich kennt, dit frisster nich.

Geändert von defabricator (30.12.2007 um 16:22:17 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wie mit Enter erstellten Absatz übergeben? Ichthys PHP Grundlagen 2 08.06.2007 17:06:12
Pfad mit einem dialog übergeben Ernest PHP für Fortgeschrittene und Experten 5 01.07.2005 20:33:36
Prüfung ob und welche Variablen übergeben wurden StilgarBF PHP Grundlagen 4 19.04.2005 14:28:01
Variablen an ein anderes Fenster übergeben Crach PHP Grundlagen 4 26.11.2004 12:02:09
variablen ohne formular per "post" übergeben toweter PHP Grundlagen 3 15.06.2003 20:31:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:25:00 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt