Konstanten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Konstanten

    Hallo,
    ich bin ein Neuling in PHP und habe ein Problem. Da Konstanten überall verfügbar sind, möchte ich den db_connect über diese regeln.

    So habe ich meine Variablen definiert:
    define ('DB_NAME' , 'usr_xyz') ;
    define ('DB_USER' , 'xyz_db');
    define ('DB_SERVER' ,'localhost') ;
    define ('DB_PASSWORD' , 'passwort' ) ;

    ansprechen möchte ich sie über include ("db_connect.inc")

    $db = @ mysql_connect ( DB_SERVER, DB_USER, DB_PASSWORD )
    or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );
    --------------------------------------------------------
    $db_check = @ mysql_select_db ( DB_NAME );

    if ( $db )
    {
    echo 'Verbindung zur Datenbank wurde hergestellt';
    }
    ----------------------------------------------------------------------
    Dies funktioniert auch 1 mal und meine in einem Table abgelegten $Variablen werden korrekt ausgelesen.
    Da nach Dateneingabe über ein Formular beim anschließenden INSERT INTO die Verbindung zur Datenbank nicht mehr besteht, rufe ich db_connect.inc wieder auf. Dann ist kein connect mehr möglich, da die Konstanten nur noch den Namen ausgeben also:
    DB_NAME
    'DB_USER
    DB_SERVER
    DB_PASSWORD

    Als Errormeldung wird ausgegeben:
    Warning: mysql_query(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var

    und

    Warning: mysql_query(): A link to the server could not be established in /var/

    Was mache ich hier falsch?

    Ich wäre sehr dankbar wenn mir jemand auf die Spünge helfen könnte.

    Im voraus recht herzlichen Dank

    wiriwa
    Zuletzt geändert von Kropff; 27.02.2008, 11:18.
    wiriwa

  • #2
    1. kein db_connect.inc sondern db_connect.inc.php, sonst kann man deine zugangsdaten auslesen
    2. kein @-zeichen in der entwicklungsphase benutzen -> $db = @ mysql_connect
    3. immer mit or die arbeiten
    4. ist das ein anderes script, wo du die formulardaten verarbeitest, oder dasselbe?
    5. in welcher datei hast du die konstanten definiert?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      OffTopic:
      3. immer mit or die arbeiten
      Würde ich nicht als generelle Empfehlung aussprechen - Exceptions und vernünftige Error Handler sind doch wesentlich sinnvolller ...
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        in der entwicklungsphase
        Exceptions und vernünftige Error Handler sind doch wesentlich sinnvolller
        aber nicht für anfänger ;-), das kommt später.

        gruß
        der anfängerversteher
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          1. kein db_connect.inc sondern db_connect.inc.php, sonst kann man deine zugangsdaten auslesen
          2. kein @-zeichen in der entwicklungsphase benutzen -> $db = @ mysql_connect
          3. immer mit or die arbeiten
          4. ist das ein anderes script, wo du die formulardaten verarbeitest, oder dasselbe?
          5. in welcher datei hast du die konstanten definiert?

          Hallo Peter,
          danke für deine schnelle antwort.
          Zu deinem Punkt 1
          da hier nur die varnamen gespeichert sind, habe ich daran nicht gedacht. werde deinen rat jedoch sofort befolgen.
          zu 2
          ich habe noch nie ein @-zeichen verwendet.
          zu 3
          wo sollte ich dabei OR DIE verwenden?
          zu4
          die formulardaten werden in einer includefile (habe auch schon mit einer php-file getestet) erfasst und über
          <form action=sta_insert.php method=post>
          und sollen mit INSERT INTO in die datenbank.
          zu 5
          die konstanten habe ich im startfile definiert.

          nochmals herzlichen dank

          gruß
          wilhelm
          wiriwa

          Kommentar


          • #6
            zu 2:
            siehe: $db = @ mysql_connect ( DB_SERVER, DB_USER, DB_PASSWORD )
            zu 3:
            hinter jeder(!) sql-abfrage!
            zu 4
            <form action="sta_insert.php" method="post"> -> anführungszeichen!
            zu 5:
            also in der db_connect.inc/db_connect.inc.php?

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              zu 2:
              siehe: $db = @ mysql_connect ( DB_SERVER, DB_USER, DB_PASSWORD )
              zu 3:
              hinter jeder(!) sql-abfrage!
              zu 4
              <form action="sta_insert.php" method="post"> -> anführungszeichen!
              zu 5:
              also in der db_connect.inc/db_connect.inc.php?

              Hallo Peter,

              zu 2
              die db_connect habe ich irgendwo herkopiert und bislang die @-zeichen anscheinend ignoriert. habe sie jetzt entfernt.
              zu 4
              diese zeile hat ein formgenerator erzeugt und habe jetzt die anführungszeichen eingefügt.
              dann erscheint folgender error
              Parse error: parse error, unexpected T_STRING in /var/www/web9/html/_test/wo_start.php on line 677
              zu 5
              als startfile meinte ich die file mit welcher aus dem menu heraus das script gestartet wird. zuerst habe ich direkt in dieser definiert, inzwischen ist die definition in einer include. also nicht im db_connect.inc.php
              mein aufruf lautet:
              include ("k_para.inc.php")
              include ("db_connect.inc.php")

              der konstantenfehler ist immer noch vorhanden
              Warning: mysql_query(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/
              und
              Warning: mysql_query(): A link to the server could not be established in /var/

              gruß
              wilhelm
              wiriwa

              Kommentar


              • #8
                Wäre irgendwie Sinnvoll z.b. bei 4. den Code zu sehen (nur reletanten Code::672-683)

                Wäre generell sinnvoller auch z.b. ein query zu zeigen und zu zeigen, wo du alles inkludest..

                mfg

                Kommentar


                • #9
                  Hallo blackgreez,
                  die zeilen 672 -683
                  </script>




                  <form action=stamm_ein.php method=post>

                  <input type=hidden name=ToMail value=wo@elektro-smile.de>
                  <DIV ID=EL1 style=\"position:absolute; left:4px;top:1059px;z-index:1\">
                  <input class=PS_4 type=Submit value=Senden onclick=\"return check_form()\">
                  </DIV>
                  <DIV ID=EL2 style=\"position:absolute; left:129px;top:1059px;z-index:2\">
                  <input class=PC_4 type=Reset value=Reset>
                  </DIV>

                  meine startfile


                  include ("k_def.inc.php" ) ;
                  include ("db_connect.inc.php") ;
                  include ("anz_para_def.inc.php") ;
                  include ("bas_anz.inc.php") ;
                  ich werde diese includefiles später in einem includeordner unterbringen zum test sind alle noch in einer directory
                  mfg
                  wilhelm
                  wiriwa

                  Kommentar


                  • #10
                    [list=1][*]Du hast immer noch keine Anführungszeichen ergänzt wie Kropff es dir empfohlen hat.[*]Die geposteten Zeilen stammen ziemlich sicher aus einer anderen Datei.[/list=1]
                    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                    Kommentar


                    • #11
                      Hallo tontechniker,
                      wie ich in einer vorigen antwort geschrieben habe, ist nach einfügen der anführungszeichen folgender error erschienen

                      Parse error: parse error, unexpected T_STRING in /var/www/web9/html/_test/wo_start.php on line 677

                      aus diesem grunde habe ich sie wieder entfernt.

                      mfg
                      wilhelm
                      wiriwa

                      Kommentar


                      • #12
                        Code:
                        <form action=\"stamm_ein.php\" method=\"post\">
                        oder
                        Code:
                        <form action='stamm_ein.php' method='post'>
                        Warning: mysql_query(): Access denied for user 'www-data'@'localhost' (using password: NO)
                        hast du dir mal die konstanten ausgeben lassen?

                        gruß
                        peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          Hallo Peter,
                          bei dem form action habe ich definitiv die \ vergessen.
                          In der testphase gebe ich immer die variable aus.
                          wenn ich diese in einer include definiere wird vor dem ersten ansprechen das value auch ausgegeben. danach bekomme ich nur noch die bezeichnung. nun habe ich die konstante in der db_connect.inc.php definiert, das wollte ich eigentlich vermeiden, damit diese nicht bei jedem aufruf aufs neue definiert werden. Das funkt auch wieder nur einmal, obwohl nach dem INSERT INTO auch das value ausgegeben wird. Wenn ich jedoch bei diesem befehl die db in klarschrift stehen habe wird der datensatz angehängt. dies wollte ich jedoch nicht, denn dann muß ich bei jeder neuinstalltion in jedem schnipsel den dbnamen eingeben. da meine anwendung für unseren schützenverein ist und ich nicht ewig pressent bin habe ich auf konstant gesetzt.
                          grüße
                          wilhelm
                          wiriwa

                          Kommentar


                          • #14


                            poste noch mal die db_connect.php


                            gruß
                            peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              meine db_connect.inc.php
                              ----------------------------------

                              <?php
                              /*
                              Connect zur Datenbank ---- PHP Skript

                              (c) 2008 by W. Rilling

                              stellt Connect zu Datenbank her */

                              define ('DB_NAME' , 'usr_xyz') ;
                              define ('DB_USER' , 'xyz_1);
                              define ('DB_SERVER' ,'localhost') ;
                              define ('DB_PASSWORD' , 'passwort' ) ;

                              $db = mysql_connect ( DB_SERVER, DB_USER, DB_PASSWORD )
                              or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );

                              $db_check = mysql_select_db ( DB_NAME );

                              if ( $db )
                              {
                              echo 'Verbindung zur Datenbank wurde hergestellt';
                              }

                              ?>

                              grüße
                              wilhelm
                              wiriwa

                              Kommentar

                              Lädt...
                              X