php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen
Alt 29.07.2005, 14:34  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 122
saibot
Standard Was bedeutet '".$Variable."' ?

Ich wusste leider nicht, wonach ich hier suchen sollte da es sich ja nicht um eine Funktion handelt. Bei der Syntax hab ich nichts gefunden

was hat die Schreibweise mit den Punkten nun zu bedeuten?

Z.B. bei if(UserName='".$name."')
saibot ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.07.2005, 14:37  
Gast
 
Beiträge: n/a
Standard

So wie es da steht, ist es kompletter Quatsch, der zu einem parse error führt.

Zu den Punkten: http://php.net/language.operators.string
(aber auch der Teil ist -wie er dasteht- Quatsch mit Soße)
 
Alt 29.07.2005, 15:13  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 122
saibot
Standard

naja das mit dem if war blödsinn, aber sowas hier funktioniert:

SELECT xxx FROM yyy WHERE UserName='".$name."' AND ......

Und aus der Zeichenketten-Operation werd ich da ned schlau
saibot ist offline  
Alt 29.07.2005, 15:25  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
<?php $query "SELECT xxx FROM yyy WHERE UserName='".$name."' AND ...... "?>
das sind drei Zeichenketten, die miteinander verknüpft werden.
Zuerst das Zeichenkettenliteral SELECT xxx FROM yyy WHERE UserName='
dann die Variable $name
und dann wieder ein Literal, ' AND ......

Mal angenommen $name ist blub, dann entsteht aus den Verknüpfungen die Zeichenkette
SELECT xxx FROM yyy WHERE UserName='blub' AND .....
 
Alt 29.07.2005, 15:59  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 122
saibot
Standard

hm, und einfach nur ..... WHERE UserName='$name' ..... würde nicht funktionieren?
saibot ist offline  
Alt 29.07.2005, 16:01  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von saibot
hm, und einfach nur ..... WHERE UserName='$name' ..... würde nicht funktionieren?
Wahrscheinlich schon
Ich machs immer so:
PHP-Code:
<?php
$strQuatsch 
"BlaBla = {$varTest} blblblbl";
?>
 
Alt 29.07.2005, 16:09  
Gast
 
Beiträge: n/a
Standard

Es gibt immer den persönlichen Stil beim Coden; der ein macht's, die andere so.


siehe auch: http://php.net/language.types.string
 
Alt 29.07.2005, 16:12  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 122
saibot
Standard

ok, danke schonmal.

Jetzt noch ne Frage zu einem Beispiel aus dem PHP Handbuch.
Da steht:

PHP-Code:
<?php
/**
 * Variable für sichere Verwendung quotieren
 */
function quote_smart($value)
{
   
// stripslashes, falls nötig
   
if (get_magic_quotes_gpc()) {
       
$value stripslashes($value);
   }

   
// quotieren, falls kein integer
   
if (!is_int($value)) {
       
$value "'" mysql_real_escape_string($value) . "'";
   }

   return 
$value;
}

// verbinden
$link mysql_connect('mysql_host''mysql_user''mysql_password')
   OR die(
mysql_error());

// sichere Anfrage formulieren
$query sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
           
quote_smart($_POST['username']),
           
quote_smart($_POST['password']));

mysql_query($query);

?>

Wenn jetzt der Benutzer aber zum Beispiel eine Zahlenkombination eingibt, wird die dann normalerweise nicht automatisch bei $_POST als String erkannt?
Ich versteh den Sinn nicht, warum abgefragt wird ob es sich um einen Int handelt oder nicht...dürfte der normalerweise garnicht vorkommen?
Und wenn es ein Int wäre, dann würde er ja nicht per '".$intwert."' in den Query-String eingebunden werden, oder?
saibot ist offline  
Alt 29.07.2005, 16:27  
Gast
 
Beiträge: n/a
Standard

Ich selbst trenne Strings immer von Variablen.
 
Alt 29.07.2005, 16:33  
Gast
 
Beiträge: n/a
Standard

Ja, per POST übertragene Parameter landen immer als Zeichenketten in $_POST.
So wie die Funktion dort angewendet wird, greift der !is_int()-Part immer.
Aber dieses quote_smart könnte auch mit anderen Parametern aufgerufen werden ...könnte.

Aber sehr schön, Du denkst also mit beim Lesen des Handbuchs.
 
 


Themen-Optionen



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2014, 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.