php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.08.2006, 14:38  
Neuer Benutzer
 
Registriert seit: 29.03.2006
Beiträge: 14
McNet befindet sich auf einem aufstrebenden Ast
Standard Übermittelte daten auslesen

Hallo.

Manchen mag diese Frage nun komisch vorkommen, ich bring sie trotz alle dem.

Habe nun auch schon in diversen php-Handbüchern und in google nach einer antwort geschaut, bin aber nicht fündig geworden.

Code:
if ( isset($HTTP_GET_VARS['sub']) || isset($HTTP_POST_VARS['sub']) )
{
   $sub = ( isset($HTTP_GET_VARS['sub']) ) ? $HTTP_GET_VARS['sub'] : $HTTP_POST_VARS['sub'];
   $sub = htmlspecialchars($sub);
}
Es wurde ein link geklickt "plapla.php?sub=x
Mit diesem Code lese ich nun den Wert von sub aus.

Und genau darum geht es mir, was gibt es noch für wege übermittelte werte auszulesen, irgendwie kenne ich 1000e Varianten vom sehen in anderen script, verstehe aber nicht was an ihnen anders ist... Der einzige unterschied ist immer nur das es entweder nur eine kurze zeile ist also im Beispiel wäre das nun $sub = plapla; - oder eben so ein riesiger code wie der obige.
Kann mir jemand sagen, wie mans am kürzensten hinbekommt den wert auszulesen??? Also mit den nötigsten angaben (die führen ja dann doch schließlich auch zum Ziel?!) Denn wenn ich manchmal 4 werte übergebe ist das manchmal für mich unverständlich langer code...

Grüßli

edit:
reicht dashir im übergeben normaler zahlenwerte??
Code:
$sub = $HTTP_POST_VARS['sub'];
McNet ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.08.2006, 15:07  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

$HTTP_POST_VARS ist veraltet und sollte nicht mehr verwendet werden. Bitte benutze stattdesen $_POST

ansonsten $sub = $_POST['sub']; reicht meistens nicht, vor allem wenn du damit Werte für SQL Sachen oder dergleichen übermittelst. $_POST ist für Post Formulare $_GET ist für Get-Formulare und/oder URL-Angaben

Das Manual sagt dir auch vieles über htmlspecialchars, isset und co

isset
htmlspecialchars
trim
addslashes

Bitte lern erst die Grundlagen richtig

Deine Frage gehört mehr oder weniger ins Anfänger Forum, eher mehr

So far, grüße

[EDIT]

Aber für dein Beispiel würde folgender Code denke ich mal abdeckend sein:

PHP-Code:
  if(isset($_GET['sub']) AND $_GET['sub'] != '') {
    
$sub trim($_GET['sub']);
    
$sub htmlspecialchars($sub);
  } else {
    
$sub '';
  } 
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 18.08.2006, 15:17  
Erfahrener Benutzer
 
Registriert seit: 10.07.2003
Beiträge: 280
freq.9
freq.9 eine Nachricht über ICQ schicken freq.9 eine Nachricht über MSN schicken
Standard

Falls das mit dem POST nun komplett raus soll:
Code:
$sub = '';
if(isset($_GET['sub']) AND $_GET['sub'] != '') {
    $sub = trim($_GET['sub']);
    $sub = htmlspecialchars($sub);
}
(Nebenbei: beim [php]-Tag passen die Zeilennummern nicht mit den Zeilen überein. Also sie sind ein wenig versetzt.)
freq.9 ist offline  
Alt 06.09.2006, 17:33  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Oder ums konkret zu sagen:

Dein ursprüngliches Beispiel prüft die Übermittlung von sub sowohl aus Formularen als auch über die Betreffzeile. Letztere wird dabei bevorzugt!! Deswegen, weil die if Abfrage zuerst nach HTTP_GET_VARS fragt. Unterschieden wird über den sogenannten 'Trinitäts-Operator'. Anschließend werden im gefundenen Inhalt noch Zeichen htmlgerecht maskiert.

Die aktuelle Form, die aber nur auf neuerem PHP funktioniert nutzt wie bereits gesagt $_GET statt $HTTP_GET_VARS und $_POST statt $HTTP_POST_VARS.

Die dritte Variante ist die unsicherste, nämlich $sub einfach so zu verwenden, wenn register_globals = on gesetzt ist. Sie birgt zahlreiche Sicherheitsrisiken.

Frage an die Comunity: Funktioniert nicht auch empty() statt der Kombi aus isset() und !='' ??

also bspw.
Code:
if (!empty($_GET['sub'])) $sub = $_GET['sub'];
else  
  $sub = (!empty($_POST['sub'])) ? $_POST['sub'] : '';
Und von trim() hat niemand was gesagt, denn wir wissen ja nicht, was das für Daten sind...
nikosch ist offline  
Alt 06.09.2006, 20:06  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi zusammen.

Ja, empty() würde hier reichen.

Noch eine Ergänzung:

* Setze in der php.ini oder am Beginn deiner Skripte error_reporting auf E_ALL.
* Ebenso register_globals auf off (das muss in der php.ini oder auch .htaccess o.Ä passieren)
* Neben $_POST und $_GET gibt es noch $_REQUEST (siehe Manual).
* Wenn magic_quotes.gpc auf on gesetzt ist, dann werden alle eingehenden Werte ziemlich nervig escaped. Den Wert also etweder ausschalten oder diese Funktion rückgängig machen (such mal hier im Forum danach).
* Alle eingehenden Variablen müssen geprüft bzw. je nach weiterer Verwendung entsprechend maskiert werden. Setzt du sie z.B. in eine MySQL-Abfrage, dann benutze mysql_real_escape_string() etc.

Basti
Basti ist offline  
Alt 07.09.2006, 10:30  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Basti
Ja, empty() würde hier reichen.
Warum nur hier?
Kannst Du mir bitte den genauen Unterschied von

PHP-Code:
isset($_GET['sub']) AND $_GET['sub'] != '' 
zu

PHP-Code:
!empty($_GET['sub']) 
erklären

Danke
 
Alt 07.09.2006, 11:19  
Benutzer
 
Registriert seit: 16.10.2004
Beiträge: 90
freitz
Standard

Zitat:
Zitat von Basti
Ja, empty() würde hier reichen.
hmm nein eigentlich nicht. also es kommt drauf an was man übergeben will.
Wenn man zum beispiel folgende URL hat : index.php?sub=0
dann ist $_GET['sub'] empty. Das gleiche gilt z.B. auch für "false" oder "NULL"
freitz ist offline  
Alt 07.09.2006, 14:38  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Stimmt. Sorry.

Also zumindest, was '0' angeht. 'false' und 'NULL' werden allerdings nicht zu false und NULL. Das wäre ja noch der Gipfel dieser besch* Typenumwandlung

Basti
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Daten aus RSS-Datei ohne PHP5 auslesen? BartTheDevil89 PHP Tipps 2008 6 10.12.2007 22:54
Vom Browser verschickte Daten auslesen und anzeigen? andy32 PHP Tipps 2008 3 22.08.2007 18:33
Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
[Erledigt] Daten aus einer Datenbank auslesen Datenbanken 2 04.09.2005 19:13
Daten aus Pw-Geschütztem bereich auslesen PHP-Fortgeschrittene 2 26.08.2005 15:27
Daten auslesen und nebeneinander wiedergeben PHP Tipps 2005-2 4 28.06.2005 13:44
Daten aus Tabelle auslesen Datenbanken 3 01.06.2005 13:49
[Erledigt] Generierte Daten von anderem Host auslesen PHP Tipps 2005 2 15.05.2005 20:54
Nur bestimmte daten aus einer tabelle auslesen. Datenbanken 15 28.02.2005 12:49
Daten aus *.MPQ-Dateien mittels fread auslesen? PHP-Fortgeschrittene 21 06.01.2005 14:40
[Erledigt] Daten auslesen - Daten hinzufügen - Daten Speichern PHP Tipps 2004-2 1 04.12.2004 10:59
[Erledigt] Daten von anderer Homepage auslesen PHP Tipps 2004-2 5 02.12.2004 18:49
Auslesen von Daten aus einer mysql Datenbank + Editieren vampsoftchef PHP Tipps 2004-2 5 15.11.2004 08:31
Daten aus einem Formular auslesen??? PHP-Fortgeschrittene 1 21.06.2004 17:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
übermittelte daten einer website auslesen, übermittelte daten php, übermittelte daten browser auslesen, $http_get_vars[\'sub_x\']

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.