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

SELFPHP


Professional CronJob-Service

Suche



iOS DevCon 2013



Software Architecture Summit 2013


Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 

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 ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign 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

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

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 25.12.2007, 12:49:27
dlanor dlanor ist offline
Anfänger
 
Registriert seit: Jun 2007
Beiträge: 12
dlanor befindet sich auf einem aufstrebenden Ast
mysql syntax problem

Hallo und frohes Fest @all ,
hab da ein Problem mit formular und in datenbank schreiben, alle feldnamen und postdatennamen sind richtig geschrieben... Ich finde den Fehler nicht !

Die Fehlermeldung lautet:
HTML-Code:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/localhost/htdocs/logic/matbuch.php on line 83
Zeile 83 ist @mysql....

Hier mal den Code:
PHP-Code:
<html>
<head>
<title>Kasse</title>
<meta name="author" content="fotolenz">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<?php

# Header #######################################################################
include_once("./common.inc.php");
################################################################################
?>
 <form action="<?=$PHP_SELF?>" method="post">
 <input type="hidden" name="send_but" value="1">
<table>
<tr>
 <td><b>Datum :</b> </td>
 <td><input type="text" name="Datum" maxlength="12" value="<?=$_POST['Datum']; ?>" size="12" onKeyDown="if(event.keyCode==13) event.keyCode=9;" > </td>
 <td>&nbsp;</td>
 <td>&nbsp;</td>
 <tr>
 <td><b>TID :</b> </td>
 <td><input type="text" name="tid" maxlength="3" value="<?=$_POST['tid']; ?>" size="3" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
<td><b>Wo :</b> </td>
 <td><input type="text" name="wo" maxlength="8" value="<?=$_POST['wo']; ?>" size="8" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
 </tr>
<tr>
 <td><b>SID :</b> </td>
 <td><input type="text" name="sid" maxlength="3" value="<?=$_POST['sid']; ?>" size="3" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
</tr>

<tr>
 <td><b>Status :</b> </td>
 <td><input type="text" name="Status" maxlength="12" value="<?=$_POST['Status']; ?>" size="12" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
</tr>
<tr>
<tr>
 <td><b>Produktart :</b> </td>
 <td><input type="text" name="PROART" maxlength="12" value="<?=$_POST['Proart']; ?>" size="12" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
</tr>
<tr>
 <td><b>Menge Bilder Klein oder CD Bilder:</b> </td>
 <td><input type="text" name="Mengek" maxlength="3" value="<?=$_POST['Mengek']; ?>" size="3" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
</tr>
<tr>
 <td><b>Menge Bilder Gross :</b> </td>
 <td><input type="text" name="Mengeg" maxlength="8" value="<?=$_POST['Mengeg']; ?>" size="8" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
</tr>
<tr>
 <td><b>Manuel ( nur Ausgaben ):</b> </td>
 <td><input type="text" name="Manuel" maxlength="3" value="<?=$_POST['Manuel']; ?>" size="3" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
</tr>
<tr>
<tr>
 <td><b>Rechnungs Nr. :</b> </td>
 <td><input type="text" name="renr" maxlength="3" value="<?=$_POST['renr']; ?>" size="3" onKeyDown="if(event.keyCode==13) event.keyCode=9;"> </td>
</tr>
<tr>
 <td><input type="submit" value="Eintragen" onKeyDown="if(event.keyCode==13) event.keyCode=13;"> </td>
 <td> </td>
</tr>
</table>

 </form>


<?php
if (isset($_POST['send_but']) == "1") {

// Materialverbrauch buchen, sowie Kassen buchungen Vornehmen
@mysql_query("INSERT INTO ".$_CONFIG['db']['tbl.bilderfassung']." (beid, Datum, Wo, tid, sid, Status, Produktart, Menge_klein, Menge_gross, Manuel, Re_Nr) VALUES ('',".$_POST['Datum']."','".$_POST['wo']."','".$_POST['tid']."','".$_POST['sid']."','".$_POST['Status']."','".$_POST['Proart']."','".$_POST['Mengek']."','".$_POST['Mengeg']."','".$_POST['Manuel']"','".$_POST['renr']."')") or die ( mysql_error() );
echo 
" Buchung erfasst";
}
         
?>
</body>
</html>
Wer was warum ich such schon nen stundchen ?
Mit Zitat antworten
  #2  
Alt 25.12.2007, 13:45:31
rambi
Guest
 
Beiträge: n/a
AW: mysql syntax problem

Den Parsefehler findest du selber, wenn du den String mal zerlegst!

Ansonsten:
1. Die Ausgaben im Formular, solltest du mindestens mit htmlentities() bearbeiten
2. $PHP_SELF beruht auf register_globals=on und erlaubt "XSS Injections"
3. verhinderst du nirgendwo "SQL Injections"
4. Sehe ich keine magic_quotes Abhandlung
Mit Zitat antworten
  #3  
Alt 25.12.2007, 13:45:46
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.039
vt1816 befindet sich auf einem aufstrebenden Ast
vt1816 eine Nachricht über Skype™ schicken
AW: mysql syntax problem

Zitat:
Zitat von dlanor Beitrag anzeigen
...

Die Fehlermeldung lautet:
HTML-Code:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/localhost/htdocs/logic/matbuch.php on line 83
...

Wer was warum ich such schon nen stundchen ?
Versuche es so:

PHP-Code:
$sql "INSERT INTO " .$_CONFIG['db']['tbl.bilderfassung'] ." (beid, Datum, Wo, tid, sid, Status, Produktart, Menge_klein, Menge_gross, Manuel, Re_Nr) VALUES ('',{$_POST['Datum']},{$_POST['wo']},{$_POST['tid']},{$_POST['sid']},{$_POST['Status']},{$_POST['Proart']},{$_POST['Mengek']},{$_POST['Mengeg']},{$_POST['Manuel']},{$_POST['renr']})";
@
mysql_query($sql) or die ( mysql_error() ); 
zzgl. rambi's Empfehlungen!
__________________
Gruss vt1816


Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (Skype, Mail, PN, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von vt1816 (25.12.2007 um 13:46:41 Uhr)
Mit Zitat antworten
  #4  
Alt 25.12.2007, 15:02:50
dlanor dlanor ist offline
Anfänger
 
Registriert seit: Jun 2007
Beiträge: 12
dlanor befindet sich auf einem aufstrebenden Ast
AW: mysql syntax problem

@vt1816
danke das geht aber warum, die lösung die ich vorher hatte geht bei anderen Programmeilen und Masken problemlos auf gleichem server.

@rampi
rampi: 1. Die Ausgaben im Formular, solltest du mindestens mit htmlentities() bearbeiten
Dlanor: warum ? wo soll mir das helfen ? Alle form eingaben werden mit scanner erfasst.

rampi: 2. $PHP_SELF beruht auf register_globals=on und erlaubt "XSS Injections"
Dlanor: brauche ich nicht ist offline anwendung auf homeserver ..

rampi :3. verhinderst du nirgendwo "SQL Injections"
Dlanor siehe bei 1 & 2

rampi: 4. Sehe ich keine magic_quotes Abhandlung
Dlanor: wer oder was ist das ?

Und nun möchte ich gerne werte von variabeln in eine tabele speichern es kommt nun der selbe fehler grummel
Das sieht so aus...

PHP-Code:
 if ($Status == Verkauft ){
         
$KS= ($Wertkk $MEK)+($Wertkg $MEG);
         
$KAS sprintf("%02.2f"$KS);
         
$geld $KAS;
         
$aus 00.00;
         
$standn $stand $kas;
         
$matK $BK-$MEK;
         
$matG $BG-$MEG
         $sqlvk 
"INSERT INTO ".$_CONFIG['db']['tbl.kasse']." (kid,Datum,Buchungsnr,Eingang,Ausgang,Stand,Bestand_K,Bestand_G) VALUES ('',{$_POST['Datum']},{'$buid'},{'$geld'},{'$aus'},{'$standn'},{'$matK'},{'$matG'})";
         @
mysql_query($sqlvk) or die ( mysql_error() );
         } 
Mit Zitat antworten
  #5  
Alt 25.12.2007, 15:31:02
rambi
Guest
 
Beiträge: n/a
AW: mysql syntax problem

Nunja.. jetzt muß ich mich richtig konzentrieren, um eine freundliche Antwort zu schreiben. ;)

Also, ich habe die Begriffe extra so gewählt, damit du bei Google und im Handbuch schnell fündig wirst. Und deine Begründungen, für die Ablehnung, führen zu "schlampigem" Code. Damit schränkst du die Portabilität sinnlos ein.
Aber evtl. ist das ja das einzige Script, welches du je schreiben wirst... Wenn nicht, werden deine Erfahrungen dich sicherlich irgendwann "in Spur" bringen.

Geändert von rambi (25.12.2007 um 15:35:40 Uhr)
Mit Zitat antworten
  #6  
Alt 25.12.2007, 16:04:16
dlanor dlanor ist offline
Anfänger
 
Registriert seit: Jun 2007
Beiträge: 12
dlanor befindet sich auf einem aufstrebenden Ast
AW: mysql syntax problem

@rampi
Danke für die freundliche erklärung, das wird mit sicherheit nicht das einzige sein was ich schreiben werde.... und sicherlich bin ich bemüht einen sauberen code zu erzeugen werde mich also bessern...

Wenn ich das mit den htmlentities() richtig verstanden habe müste ich also korrekter weise
die werde der Post-daten so behandeln:

PHP-Code:
$datum htmlentities($_POST['Datum']) ; 
und dann $Datum in sql eintragen

Was dann aber ein neues Problem mich erzeugt, siehe meine antwort unten, wo ich werte mit variabel in die db eintragen möchte.
die anderen punkte werde ich noch googeln.
Mit Zitat antworten
  #7  
Alt 25.12.2007, 16:32:04
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 44
Beiträge: 1.013
defabricator befindet sich auf einem aufstrebenden Ast
AW: mysql syntax problem

Für die Datenbank musst Du die Parameter gegen Datenbankfehler absichern, sogenannte sql injections.
Für Mysql tust Du das mittels mysql_real_escape_string().
Dabei kommt es nicht auf Bösartigkeit an. Wenn die Parameter nicht behandelt werden, kannst Du zum Beispiel Produktart mit ' erfassen und auch kein Wo? mit '.

PHP-Code:
$Datum=mysql_real_escape_sring($_POST['Datum']);
$wo=mysql_real_escape_sring($_POST['wo']);
...
$sql 'INSERT INTO 
 '
.$_CONFIG['db']['tbl.bilderfassung']."
 (
  Datum, Wo, tid,
  sid, Status, Produktart, Menge_klein,
  Menge_gross, Manuel, Re_Nr
 )
VALUES
 (
  '$Datum','$wo','$tid',
  '$sid','$Status','$Proart','$Mengek',
  '$Mengeg','$Manuel','$renr'
 )"
;
mysql_query($sql) or die ( mysql_error() ); 
Für die Ausgabe der Werte im Formular würde ich mir eine Funktion erstellen
PHP-Code:
<?php
function html_post_or($name$default='') {
    echo 
htmlentities(isset($_POST[$name]) ? $_POST[$name] : $default);
}
?>
...
<input type="text" name="Datum" maxlength="12" value="<?php html_post_or('Datum'); ?>" size="12" onKeyDown="if(event.keyCode==13) event.keyCode=9;" >
__________________
Wat der Bauer nich kennt, dit frisster nich.

Geändert von defabricator (25.12.2007 um 16:33:48 Uhr)
Mit Zitat antworten
  #8  
Alt 25.12.2007, 16:37:54
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.039
vt1816 befindet sich auf einem aufstrebenden Ast
vt1816 eine Nachricht über Skype™ schicken
AW: mysql syntax problem

Zitat:
Zitat von dlanor Beitrag anzeigen

PHP-Code:
 if ($Status == Verkauft ){
         
$KS= ($Wertkk $MEK)+($Wertkg $MEG);
         
$KAS sprintf("%02.2f"$KS);
         
$geld $KAS;
         
$aus 00.00;
         
$standn $stand $kas;
         
$matK $BK-$MEK;
         
$matG $BG-$MEG
         $sqlvk 
"INSERT INTO ".$_CONFIG['db']['tbl.kasse']." (kid,Datum,Buchungsnr,Eingang,Ausgang,Stand,Bestand_K,Bestand_G) VALUES ('',{$_POST['Datum']},{'$buid'},{'$geld'},{'$aus'},{'$standn'},{'$matK'},{'$matG'})";
         @
mysql_query($sqlvk) or die ( mysql_error() );
         } 
Falsch!

Besser:

PHP-Code:
...
         
$sqlvk "INSERT INTO ".$_CONFIG['db']['tbl.kasse']." (kid,Datum,Buchungsnr,Eingang,Ausgang,Stand,Bestand_K,Bestand_G) VALUES ('',{$_POST['Datum']},'$buid','$geld','$aus','$standn','$matK','$matG')";
         @
mysql_query($sqlvk) or die ( mysql_error() );
         } 
Du siehts den Unterschied?
__________________
Gruss vt1816


Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (Skype, Mail, PN, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #9  
Alt 25.12.2007, 16:41:23
rambi
Guest
 
Beiträge: n/a
AW: mysql syntax problem

Beim vorfüllen von Formularen immer IMMER htmletities() oder seine Brüder verwenden.

Alle Strings müssen vor der Verwendung in MySQL Statements durch mysql_real_escape_string() geschaufelt werden.

Beide sollten zu einem Reflex werden, weil:
1. Verhindern dass es deine Formulare oder sonstigen HTML Krams (sporadisch) zerreißt
2. "zufällig" ungültige SQL Statements
3. SQL Injections
4. XSS Injections

Mir sind keine Gegenanzeigen bekannt.

Geändert von rambi (25.12.2007 um 16:42:15 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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
MySQL Page Script. Problem. dtone MySQL 8 15.10.2006 14:58:06
MySQL Connect Problem DanielEXQ2 PHP Grundlagen 8 14.05.2005 02:07:55
Syntax Zeilenumbruch IN Mysql Don Stefano PHP Grundlagen 9 05.04.2005 08:35:05
mysql und php problem schmidt PHP für Fortgeschrittene und Experten 9 31.10.2003 18:05:13
Problem mit Verständniss von Syntax aus dem Web??? s-fox PHP Grundlagen 4 05.09.2003 17:23:22


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:38:59 Uhr.


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


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