Javascript-forum
sql geht nicht - Druckversion

+- Javascript-forum (https://javascript-forum.de)
+-- Forum: Entwicklung (https://javascript-forum.de/forumdisplay.php?fid=4)
+--- Forum: Datenbanken (https://javascript-forum.de/forumdisplay.php?fid=36)
+--- Thema: sql geht nicht (/showthread.php?tid=514)

Seiten: Seiten: 1 2


sql geht nicht - admin - 19.04.2022

Ich schreibe dein Problem mal hier  rein weil es vieleicht noch andere gibt die das auch haben



PHP-Code:
<?php
error_reporting
(E_ALL); 
ini_set('display_errors'true);
$pdo = new PDO('mysql:host=localhost:3306;dbname=auftrag''Name''Passwort');
?>
<!DOCTYPE html> 
<html> 
<head>
  <title>Hairlich | Registrierung</title> 
</head> 
<body>
<?php
$showFormular 
true;
if(isset(
$_POST['register'])) {
 
$error false;
 
$email $_POST['email'];
 
$preis $_POST['preis'];
 
 $staff $_POST['staff'];
 if(!
filter_var($email)) {
 echo 
'<p class="error"><b>Bitte einen gültigen Benutzernamen angeben</b></p><br>';
 
$error true;
 } 
 if(!
$error) { 
 
$statement $pdo->prepare("SELECT * FROM register WHERE email = :email");
 
$result $statement->execute(array('email' => $email));
 
$user $statement->fetch();
 if(
$user !== false) {
 echo 
'<p class="error"><b>Dieser Benutzername ist bereits vergeben</b></p>';
 
$error true;
 } 
 }
 if(!
$error) { 
 
$statement $pdo->prepare("INSERT INTO register (email, preis, staff) VALUES (:email, :preis, :staff)");
 
$result $statement->execute(array('email' => $email'preis' => $preis'staff' => $staff));
 if(
$result) { 
 echo 
'
 
 <br><h1>Du wurdest erfolgreich registriert. </h1><a href="login.php"><button>zum Login</button></a>'
;
 
$showFormular false;
 } else {
 
var_dump($result);
var_dump($statement);
 }
 } 
}
if(
$showFormular) {
?>
 <br><br><br><br>
 <br><br><br><br>
<form action="registrieren.php" method="post">
Benutzername:<br>
<input type="text" size="40" maxlength="250" name="email" placeholder="Wähle einen Benutzernamen..."><br><br>
Dein Passwort:<br>
<input type="text" size="40"  maxlength="250" name="passwort" placeholder="Wähle ein Passwort..."><br>
Passwort wiederholen:<br>
<input type="text" size="40" maxlength="250" name="passwort2" placeholder="weitere Infos"><br><br>
Eingeloggt bleiben?<br>
 <select class="" name="staff">
 <option value="false">Diese Option kommt bald</option>
 </select>
 <br><br>
 
 <input name="register" type="submit" value="Registrieren">
</form>
<?php
//Ende von if($showFormular)
?>
 
<br>
 <a href="login.php" class="alreadyreg">Bereits registriert? -> Anmelden</a>
 
 <style>
body {font-family: Arial, Helvetica, sans-serif; text-align: center; background-color: #E6E6E6;}
input[type=text], select, textarea {
 width: 30%;
 padding: 12px;
 border: 1px solid #ccc;
 border-radius: 4px;
 box-sizing: border-box;
 margin-top: 6px;
 margin-bottom: 16px;
 resize: vertical;
}
 
 input[type=password]{
 width: 30%;
 padding: 12px;
 border: 1px solid #ccc;
 border-radius: 4px;
 box-sizing: border-box;
 margin-top: 6px;
 margin-bottom: 16px;
 resize: vertical;
}
input[type=submit] {
   background-color: #578e8c;
 color: white;
 padding: 12px 20px;
 border: none;
 border-radius: 4px;
 cursor: pointer;
 opacity: 0.8;
}
input[type=submit]:hover {
 background-color: #578e8c;
 opacity: 1.0;
}
.container {
 border-radius: 5px;
 background-color: #f2f2f2;
 padding: 20px;
}
 
 
 
 button{
  background:#1AAB8A;
  color:#fff;
  border:none;
  position:relative;
  height:60px;
  font-size:1.6em;
  padding:0 2em;
  cursor:pointer;
  transition:800ms ease all;
  outline:none;
}
button:hover{
  background:#E6E6E6;
  color:#1AAB8A;
}
button:before,button:after{
  content:'';
  position:absolute;
  top:0;
  right:0;
  height:2px;
  width:0;
  background: #1AAB8A;
  transition:400ms ease all;
}
button:after{
  right:inherit;
  top:inherit;
  left:0;
  bottom:0;
}
button:hover:before,button:hover:after{
  width:100%;
  transition:800ms ease all;
}
 .error{
 color: red;
 
 }
 .alreadyreg{
 text-decoration: none;
 font-size: 10pt;
 color: black;}
 
 .alreadyreg:hover{
 text-decoration: none;
 font-size: 12pt;
 color: red;}
 
</style>
</body>
</html> 


Jetzt aber, oder? Wo liegt der Fehler?


Error:

Code

  1. [/url]Notice: Undefined index: preis in /var/www/.php on line 18
  2. [url=https://=10533#codeLine_2_6c506f]bool(false) object(PDOStatement)#3 (1) { ["queryString"]=> string(74) "INSERT INTO register (email, preis, staff) VALUES (:email, :preis, Confusedtaff)" }

SoBig Grinu solltest erstmal kucken wo du preis definierst ? Gar nicht. also muß da erstmal ein Preis Feld dazu ,oder du nimmst den Preiss aus den Sql abfrage raus.

Mach das erstmal dann sehen wir weiter


RE: sql geht nicht - admin - 19.04.2022

Links habe ich raus genommen weil weiß ja nicht ob du die veröffentlichen wolltest. Aber spielen hier auch keine rolle. Mach mal preis feld damit rein


RE: sql geht nicht - admin - 19.04.2022

Warum speicherst du benutzernamen unter email ? Nagut mußt du wissen. Wie sieht den deine Datenbank aus ? Welche einträge hast du den da ?
Weil du speicherst keine Passwörter. Wandelst die Passwörter nicht um . Also da fehlt immer noch die hälfte. Warum immst du den nicht erstmal ein fertiges script was du nur noch bearbeiten mußt. Weil ich glaube das du noch nicht soweit bist das alleine hinzubekommen weil deine ersten versuchen haben mir gazeigt das du nicht weißt was du da machst.
Ist auch nicht schlimm,so haben alle mal angefangen,nur du solltest weiter unten anfangen und nicht mitten drinne.

Sql hat mich am Anfang auch aufgeregt und habe da auch gar nicht durchgeblickt. Habe den Laptop auf den Tisch geschraubt sonst hätte ich den Scheiß aparat an der Wand geklatscht. Aber nach der Zeit lernt man auch das.

Was kannst du den überhaupt in Php ? Kriegst du da ein anmelde Formular hin , so das deine Abfragen mit einen echo zurück kommen? Versuch erstmal das weil wie gesagt du hast keinen Passwort vergleich ,du fragst kein Preis ab ( was bei der registrierung wohl auch nicht gebraucht wird ).

Ansonsten speichert dein vorhandener Code das auch in der Db ,aber an der falschen stelle und ohne Passwort und Namen


RE: sql geht nicht - admin - 19.04.2022

Also ich hasse ja PDO. Wollte dir das da mal hinfummeln und komischer weise klappt das ie. Die Fehlermeldungen von PDO kann man auch nicht gebrauchen da steht nie das drinne was man brauch.. Bei mysqli stehteht zumindest was falsch ist und kann es dann auch beheben.



Naja ich habe dein Kram mal versucht so zumachen das es geht und vor allem auch alles an der stelle ist wo es hingehöhrt.
Wie weit das vom Code her richtig ist oder was man nicht mehr nehmen sollte kann ich dir nicht richtig sagen.
Am besten frag mal rum ob du das Script so nehmen kannst.
Damit ich mir nicht anhöhren muß was ich für ein Scheiß poste schreibe ich gleich dabei das ich nur zeige wie man es nicht machen tut.
Das Script geht aber frag mal ein Profi was noch geändert werden müßte OK???????

PHP-Code:
<!DOCTYPE html
<
html
<
head>
<
title>Hairlich Registrierung</title>    
</
head
<
body>
<?
php
$showFormular 
true;
if(isset(
$_POST['register'])) {
        
$error false;
        
$email $_POST['email'];
        
$passwort $_POST['passwort'];
        
$preis $_POST['preis'];
        
$name $_POST['name'];
        
$staff $_POST['staff'];
        
        if(!
filter_var($emailFILTER_VALIDATE_EMAIL)) {
            echo 
'Bitte eine gültige E-Mail-Adresse eingeben<br>';
            
$error true;
        }     
        if(
strlen($passwort) == 0) {
            echo 
'Bitte ein Passwort angeben<br>';
            
$error true;
        }
        if(
$passwort != $_POST['passwort2']) {
            echo 
'Die Passwörter müssen übereinstimmen<br>';
            
$error true;
       }
       
       
$mysqli mysqli_connect('localhost''sebastian1012_test''ACABITW''sebastian1012_test');
       if (
mysqli_connect_errno())      die ("Connect failed: " mysqli_connect_error($mysqli));     
       
mysqli_set_charset($mysqli"utf8"); 
      
       
$query "Select name FROM register WHERE name='$name'";
       
$resultmysqli_query($mysqli$query) OR die("Query: <pre>".$query ."</pre>\n"."Antwort: "mysqli_error($mysqli));
       if (
mysqli_num_rows($result)>0){
                      echo 
"- Der Eingegeben Name  ".$name ." ist Bereits in unserer Datenbank vorhanden";
                      
$error true;
       }
       
$query1 "Select email FROM register WHERE email='$email'";
       
$result1mysqli_query($mysqli$query1) OR die("Query: <pre>".$query1 ."</pre>\n"."Antwort: "mysqli_error($mysqli));
       if (
mysqli_num_rows($result1)>0){
                      echo 
"- Die Eingegeben E-Mail Adresse ".$email ." ist Bereits in unserer Datenbank vorhanden";
                      
$error true;
       }
       
       if(!
$error) {    
             
$passwort_hash password_hash($passwortPASSWORD_DEFAULT);
             
$query "Insert  into  `register`  (`name`,`passwort`, `preis`,`email`,`staff`)   values  ('%s','%s','%s','%s','%s')";
             
$query sprintf($querymysqli_real_escape_string($mysqli,$name),
             
mysqli_real_escape_string($mysqli$passwort_hash),
             
mysqli_real_escape_string($mysqli$preis),
             
mysqli_real_escape_string($mysqli$email),  
             
mysqli_real_escape_string($mysqli$staff));  
             
$result mysqli_query($mysqli$query)  or die ("MySQL-Error: " mysqli_error($mysqli));
             if(
$result) {         
                  echo  
'<span style="color:green;font-weight:bold;">Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a></span>';
             } else {
                  echo 
'<span style="color:red;font-weight:bold;">Beim speichern ist ein Fehler aufgetreten. </span>';
             }
       }
}
if(
$showFormular) {
?>
<style>
body {font-family: Arial, Helvetica, sans-serif; text-align: center; background-color: #E6E6E6;}
input[type=text], select, textarea {
    width: 30%;
    padding: 12px;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
    margin-top: 6px;
    margin-bottom: 16px;
    resize: vertical;
}
        
input[type=password]{
    width: 30%;
    padding: 12px;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
    margin-top: 6px;
    margin-bottom: 16px;
    resize: vertical;
}
input[type=submit] {
   background-color: #578e8c;
    color: white;
    padding: 12px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    opacity: 0.8;
}
input[type=submit]:hover {
    background-color: #578e8c;
        opacity: 1.0;
}
.container {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 20px;
}
button{
  background:#1AAB8A;
  color:#fff;
  border:none;
  position:relative;
  height:60px;
  font-size:1.6em;
  padding:0 2em;
  cursor:pointer;
  transition:800ms ease all;
  outline:none;
}
button:hover{
  background:#E6E6E6;
  color:#1AAB8A;
}
button:before,button:after{
  content:'';
  position:absolute;
  top:0;
  right:0;
  height:2px;
  width:0;
  background: #1AAB8A;
  transition:400ms ease all;
}
button:after{
  right:inherit;
  top:inherit;
  left:0;
  bottom:0;
}
button:hover:before,button:hover:after{
  width:100%;
  transition:800ms ease all;
}
.error{
  color: red;
            
}
.alreadyreg{
    text-decoration: none;
    font-size: 10pt;
    color: black;}
        
.alreadyreg:hover{
    text-decoration: none;
    font-size: 12pt;
    color: red;}
form{
  margin-top:160px;      
}
</style>
<form action="loginscript2.php" method="post">
Email-Adresse :<br>
<input type="text" size="40" maxlength="250" name="email" placeholder="Wähle einen Benutzernamen..."><br><br>

Benutzername:<br>
<input type="text" size="40" maxlength="250" name="name" placeholder="Wähle einen Benutzernamen..."><br><br>

Dein Passwort:<br>
<input type="text" size="40"  maxlength="250" name="passwort" placeholder="Wähle ein Passwort..."><br>

Passwort wiederholen:<br>
<input type="text" size="40" maxlength="250" name="passwort2" placeholder="weitere Infos"><br><br>

Preis:<br>
<input type="text" size="40" maxlength="250" name="preis" placeholder="weitere Infos"><br><br>

Eingeloggt bleiben?<br>
<select class="" name="staff">
 <option value="false">Diese Option kommt bald</option>
</select>
<br><br>
<input name="register" type="submit" value="Registrieren">
</form>
<?php
//Ende von if($showFormular)
?>    
<br>
<a href="login.php" class="alreadyreg">Bereits registriert? -> Anmelden</a>
</body>
</html> 

Außerdem mußt du dir auch nochmal das Html Grundgerüßt anschaun weil du hattest deine style angaben ganz unten im Script und da gehöhren sie aufjedenfall nicht hin.


RE: sql geht nicht - admin - 19.04.2022

basti1012, höre auf den Leuten so einen Sch.... zu servieren! Du brauchst echt einen Aufpasser, damit du dein gefährliches Halbwissen nicht verbreitest!

Ungefiltert Daten an die DB senden, ist ein No Go


RE: sql geht nicht - admin - 19.04.2022

was meinst du den jetzt schon wieder mit ungefiltert


RE: sql geht nicht - admin - 19.04.2022

ysqli_real_escape_string


RE: sql geht nicht - admin - 19.04.2022

Ja habe ich jetzt auch rausgefunden. Ich vergesse immer das bei Pdo nicht gebraucht wird.
Da es im AnfangsScript noch Pdo wahr und ich pdo hasse hatte ich beim umbauen daran nicht mehr gedacht.

Ändere das gleich. Ist da noch was scheiße dran ?


RE: sql geht nicht - admin - 19.04.2022

SO Code in POST4 wurde geändert.
So besser?
Ich frage mich eigentlich, ob man da überhaupt das EVA Prinzip verbessern kann ? Zumindest wüsste ich nicht wie. Bei meinem Chat fallen mir sofort Sachen auf die man ändern müsste, aber bei dem kleinen Script hier fällt mir nix weiter ein, außer vielleicht noch Funktionen zu verwenden ,nur ob das der richtige weg ist ??????


RE: sql geht nicht - admin - 19.04.2022

Zuerst einmal, kann man nicht den erweiterten Editor als Default einstellen, immer auf Beitragsvorschau zu klicken, um den zu bekommen ist lästig

Dann zu deinem Quellcode. Du solltest dir grundsätzlich mehr Mühe mit deinen Quellcodes geben. Die Lesbarkeit leidet bei dir zu sehr. Beispiel:
PHP-Code:
$query sprintf($querymysqli_real_escape_string($mysqli,$name),
mysqli_real_escape_string($mysqli$passwort_hash),
mysqli_real_escape_string($mysqli$preis),
mysqli_real_escape_string($mysqli$email),  
mysqli_real_escape_string
($mysqli$staff));   
Das ist einfach nur Käse. So ist das deutlich besser zu lesen:

PHP-Code:
$query sprintf($querymysqli_real_escape_string($mysqli,$name),
 
                        mysqli_real_escape_string($mysqli$passwort_hash),
 
                        mysqli_real_escape_string($mysqli$preis),
 
                        mysqli_real_escape_string($mysqli$email),  
                         mysqli_real_escape_string
($mysqli$staff));   
Und glaubst du wirklich, dass dein Script jemals zu dieser Ausgabe kommt:

PHP-Code:
echo '<span style="color:red;font-weight:bold;">Beim speichern ist ein Fehler aufgetreten. </span>'


Ich bin bei dir fürs Erste mal raus, es gibt nicht einen Quellcode, der keine Macken hat. Ob größere oder kleinere Macken ist wurscht, fehlerfrei ist da bisher nichts dabei gewesen. Und viele Macken sind völlig unnötig, weil du zu wenig mitdenkst oder du keine Sorgfalt walten lässt. Das macht alles keinen Spaß.

Nachtrag: Und wenn man dir Dinge erklärt und du trotzdem noch in einem anderen Forum nachfragst (https://www.php.de/forum/webentwicklung/php-einsteiger/1535987-login-script-was-soll-ich-tun-filtern-htmlspecialcharts-usw) dann ist das auch nicht gerade förderlich für eine Hilfsbereitschaft.