Hackerboard WikiHaboBlog

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

php -> insert into klappt nicht? Oo

Diskussion: php -> insert into klappt nicht? Oo im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; hi, erstmal der code: inhalt der mysql_connect.php: Code: <?php $link = mysql_connect("127.0.0.1", "root", ""); if (!$link) { die('keine Verbindung möglich: ...

Antwort
Alt 01.11.09, 19:48   #1 (permalink)
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard php -> insert into klappt nicht? Oo


hi, erstmal der code:

inhalt der mysql_connect.php:

Code:
<?php
$link = mysql_connect("127.0.0.1", "root", "");
if (!$link) {
    die('keine Verbindung möglich: ' . mysql_error());
}
echo 'Verbindung erfolgreich';
error_reporting(E_ALL);
mysql_select_db('uno', $link);
 
?>
<br>
inhalt der form1.php:
Code:
<?php
include("mysql_connect.php");

$_username = $_POST['username'];
$_prename = $_POST['prename'];
$_surname = $_POST['surname'];
$_email = $_POST['email'];
$_pwds = $_POST['pwds'];
$_school = $_POST['school'];
$_birthday = $_POST['birthday'];

$sql = "INSERT INTO user (username,prename,surname,email,pwd,school,birthday) VALUES ('$_username','$_prename',$_surname','$_email','$_pwds','$_school','$_birthday')"; 

echo "sql: " . $sql . "<br>";

 if($group1){ 
 "INSERT INTO uno (sex) VALUES ('1')";
 }
 else "INSERT INTO uno (sex) VALUES ('0')";
mysql_query($sql);

echo 'Werte wurden (hoffentlich) eintgetragen!';
 mysql_close($link);

 ?>
und die html:
Code:
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
  <PRE>
  <form action="form1.php" method="post">
  Nickname:          		<input type="text" name="username" value=""><br>
  Vorname:          		<input type="text" name="prename" value=""><br>
  Nachname:          		<input type="text" name="surname" value=""><br>
  E-Mail:          		<input type="text" name="email" value=""><br>
  Passwort:			<input type="text" name="pwds" value=""><br>
  Schule:          		<input type="text" name="school" value=""><br>
  Geburtstag(JJJJ-MM-TT):	<input type="text" name="birthday" value=""><br>
  </PRE>  
  
	<input type="radio" name="group1" value="1">weiblich 
    <input type="radio" name="group1" value="0">männlich<br>
    <input type="submit" />
  
  </form>

  </body>
</html>

Mein Problem ist, das das Script meine Datenbank nicht mit den Formulardaten füllt :(

die datenbank "uno" hat die tabelle "user", die folgende felder hat:
ID -> Mediumint, auto increment
email -> char(255)
username -> char(255)
pwd -> -> char(255)
sex -> tinyint(1)
prename -> char(255)
surname -> char(255)
birthday -> date
school -> char(255).

da ID auto-increment ist brauche ich mich ja nicht drum zu kümmern.
die frage is, was mache ich denn dann falsch?
haaalp :D
__________________
und?
_fux_ ist offline   Mit Zitat antworten
Alt 01.11.09, 20:07   #2 (permalink)
Senior Member
 
Benutzerbild von Chakky
 
Registriert seit: 28.10.03
Chakky Leistung: Z3
Chakky eine Nachricht über ICQ schicken
Likes: 95
Standard

was sagt die ausgabe mysql_error();
__________________
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world
Chakky ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 01.11.09, 20:27   #3 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

1) Dass du damit anfällig für SQL-Injection bist, ist dir klar? Niemals Userdaten direkt verarbeiten!
2) Du sagst birthday ist vom Typ date? Warum versuchst du dann einen String zu speichern?
3) Dieser Block macht genau nix

Code:
if($group1){ 
 "INSERT INTO uno (sex) VALUES ('1')";
 }
 else "INSERT INTO uno (sex) VALUES ('0')";
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 01.11.09, 21:23   #4 (permalink)
Themenstarter
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard

1) kann schon sein, es geht um die basics ^^
2) hab das gefixt, habe die string teile weggelassen
3) block gelöscht


funktioniert nich.

warum macht denn block 3 nix? na gut...wenn ich "maennlich" eintrage, dann is $group1 doch auf 1 und wenn ich sage if($group1) dann is das true ;D dann sollte der doch den wert 1 eintragen. aber habs wie oben geschrieben gelöscht.

trotzdem funktioniert es nicht >.>

Code:
INSERT INTO user (username,prename,surname,email,pwd,school,birthday) VALUES ('nicknick','Heinz',Becker','q3@gx.net','passwert','Realschule',2009-12-12)
hab mir mal $sql ausgeben lassen... sieht doch gut aus mhmmm
__________________
und?
_fux_ ist offline   Mit Zitat antworten
Alt 01.11.09, 21:28   #5 (permalink)
Senior Member
 
Benutzerbild von Chakky
 
Registriert seit: 28.10.03
Chakky Leistung: Z3
Chakky eine Nachricht über ICQ schicken
Likes: 95
Standard

setzt mal den sql string per phpmyadmin ab und schau was er dort macht
__________________
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world
Chakky ist offline   Mit Zitat antworten
Alt 01.11.09, 22:29   #6 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Zitat:
Original von Chakky
was sagt die ausgabe mysql_error();
Der Block macht nichts, weil da kein Befehl drin ist
Was du machen wolltest war wohl dieses hier:

Code:
if($group1)
{ 
    mysql_query("INSERT INTO uno (sex) VALUES ('1')");
 }
else
{
    mysql_query("INSERT INTO uno (sex) VALUES ('0')");
}
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 01.11.09, 22:33   #7 (permalink)
Themenstarter
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard

danke chakky, auf diese echt einfache, aber total hilfreiche idee hätte ich auch mal kommen können !!!

problem war ein ' << zuwenig.... hab das nich gesehen, aber wenn man das so in das statement eingibt gibt der ja einem gute hinweise.

perfekt, sehr gut und nochmal vielen dank ^^
__________________
und?
_fux_ ist offline   Mit Zitat antworten
Alt 02.11.09, 16:28   #8 (permalink)
Themenstarter
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard

Zitat:
Original von Thunderb0lt

Der Block macht nichts, weil da kein Befehl drin ist
Was du machen wolltest war wohl dieses hier:

Code:
if($group1)
{ 
    mysql_query("INSERT INTO uno (sex) VALUES ('1')");
 }
else
{
    mysql_query("INSERT INTO uno (sex) VALUES ('0')");
}
ach stimmt lol. hab ich glatt übersehen Oo
wär mir spätestens nach 3 stunden aufgefallen lol. ne spaß beiseite... bin ja noch php frischling

ach statt uno muss ich natürlich user schreiben, denn uno ist die datendank und user die dazugehörige tabelle.
__________________
und?
_fux_ ist offline   Mit Zitat antworten
Alt 03.11.09, 08:48   #9 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 75
Standard

noch ein kleiner Tipp bezüglich der SQL-Injection-Anfälligkeit:

NEVER TRUST AN USER-INPUT!!!

dein Code:
PHP-Code:
<?
$_username 
$_POST['username'];
$_prename $_POST['prename'];
$_surname $_POST['surname'];
$_email $_POST['email'];
$_pwds $_POST['pwds'];
$_school $_POST['school'];
$_birthday $_POST['birthday'];
?>
wie schon erwähnt: ganz gefährlich!


alles, was Strings sind (text, char, varchar,...), jagst du durch mysql_real_escape_string() und alles was rein numerisch ist, castest du auch explizit als solches.

Bsp:
PHP-Code:
<?
$_username 
mysql_real_escape_string($_POST['username']);

$_plz = (int) $_POST['plz'];
$_kommazahl = (float) $_POST['kommazahl'];

//oder:
$_plz intval($_POST['plz']);
$_kommazahl floatval($_POST['kommazahl']);
?>
Und wenn ein ganz bestimmtes Format verlangt wird, wie beim Datum, dann überprüfst du das mit regulären Ausdrücken und gehst im Fehler-Fall zurück zum Formular, auf dass die Daten nochmals eingegeben werden müssen.

Bsp:
PHP-Code:
<?
$_birthday 
$_POST['birthday'];

if(!
preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/i",$_birthday))
{
    echo 
"Fehler; bitte Datum im Format YYYY-MM-DD eingeben - nochmal bitte!";
}
else
{
    
//insert data into mysql-database
}
?>
beavisbee ist offline   Mit Zitat antworten
Alt 03.11.09, 11:58   #10 (permalink)
Themenstarter
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard

hey beavisbee -> sehr nett und geil das du das so hier mal aufgecodet hast Oo
ich wollte demnächst ne kleine admin oberfläche für ein fikitves projekt machen, warum also nicht gleich richtig. korrekte sache, ehrlich ^^
__________________
und?
_fux_ ist offline   Mit Zitat antworten
Alt 03.11.09, 12:11   #11 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Falls dich das Thema näher interessiert kann ich dir dieses Buch empfehlen:

http://www.php-sicherheit.de/
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 03.11.09, 16:05   #12 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 75
Standard

hab das Thema mal ganz grob in 'nem kleinen Vortrag für's Studium angerissen.
http://studium.cs-bergann.de/inet/phpsecurity/

da einige der Zuhörer mit PHP noch keinerlei Erfahrung hatten, hab ich versucht, einen Überblick über Gefahren zu geben, ohne zu tief ins Detail zu gehen. (hätte wohl den Zeit-Rahmen gesprengt...)

Es gibt Demo-Codes und Demo-Server-Config, um selbst mal auszuprobieren, unter welchen Umständen welcher PHP-Code gefährlich sein könnte...
(hauptsächlich in Bezug auf File-Injection)

(natürlich sind auch realitäts-ferne Demos dabei, wie das CD-Laufwerk-Öffnen-Script - aber am deutlichsten für's Publikum ist es schließlich, wenn bei dem Rechner, den man als Server hinstellt, tatsächlich ein gut sichtbares Eigenleben auftritt...)

Wollte eigentlich die Code-Sammlung schon immer mal erweitern (mal paar MySQL-Injections, komplexere Code-Einschleusung über Log-Files oder über MySQL) und auch mal direkte Vergleiche machen, welche Angriffe von php-suhosin-Patch abgefangen werden können, welche von Apache-Modulen abgefangen werden können, etc., um zu zeigen, dass eine Seite, die auf EINEM Server problemlos läuft unter anderen Umständen große sicherheitstechnische Probleme bereiten kann - aber irgendwie fehlt mir die Zeit
beavisbee ist offline   Mit Zitat antworten
Alt 07.11.09, 16:37   #13 (permalink)
Themenstarter
 
Benutzerbild von _fux_
 
Registriert seit: 13.09.05
_fux_ Leistung: Abacus
Likes: 5
Standard

so, sorry für die späte antwort.

aber auch besten dank an beavisbee, sehr nice :-)
werde jetzt mein project erstmal anpassen, is ja keine arbeit da ich ja noch nich viel gemacht hab ;-)

also danke an alle die mir produktiv geholfen haben!

-> ich habe in der if-schleife (kleiner scherz hahaha... is ne abfrage ich weiß... oh man!) bei der datumseingabe noch ein exit eingeben, damit der rest des scriptes nicht mehr ausgeführt wird.... ansonsten führt der ja den rest aus und die DB wird mit "falschen" werten gefüllt...

>> statt exit nehm ich lieber die("TEXT warum script sterben musste");
__________________
und?
_fux_ ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » php -> insert into klappt nicht? Oo
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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sound Klappt nicht! Qk1ll3r Die Problemzone 4 31.03.07 13:34
XP Pro SP2 Key ändern klappt nicht a-t-2 Windows 9 02.03.07 01:31
CIA Commander klappt nicht!! kronwied Windows 3 07.03.05 13:54
ide erkennung klappt nicht trip2nite Die Problemzone 2 27.01.05 13:31


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61