Scoutnet vzw

We connect scouts!
Het is momenteel 16 Nov 2024 23:20

Alle tijden zijn UTC + 1 uur




Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 15 berichten ] 
Auteur Bericht
BerichtGeplaatst: 12 Okt 2005 21:08 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 12 Jan 2004 0:00
Berichten: 94
Woonplaats: Berchem (Antwerpen)
OK, kan iemand even de volgende code even voor me nakijken,
zit er al een uur op te staren en wordt er geweldig zot van.

Bedoeling is: een simpel scriptje dat een email-adres wegschrijft in de database. Heb er wel nen (gepikte) check opgezet om er voor te zorgen dat één of ander puber hier niet eender wat kan invullen.
http://www.jindustria.be

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JINDUSTRIA - Jins Jonas II </title>
<link rel=stylesheet type="text/css" href="css.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
...

<form action=index.php?act=check method=post>
Email:  <input type=text lenght=30 name=email value=<? echo $_POST['email']; ?>><br/><br/>
<input type=submit value=Send>
</form>

<?
if ($_GET['act'] == 'check')
{
   include_once("checkemail.php");
   if (checkemail($_POST['email']))
   {               
      $Host = "localhost";
      $User = "sn1314";
      $Password = "****";
      $DBName = "sn1314_3";
      $TableName = "newsletter";
      $email = $HTTP_POST_VARS["email"];

      $Link = mysql_connect ($Host, $User, $Password);
      $check = "SELECT * FROM 'newsletter' WHERE 'email'='$email'";
      $check_result = mysql_db_query ($DBName,$check,$Link);

      if (mysql_num_rows($check_result) == 0)
      {
         $Query = "INSERT into $TableName values ('0', '$email')";
         if (mysql_db_query ($DBName, $Query, $Link))
         {
            print("Uw emailadres werd bijgevoegd aan onze database.<br/>Vanaf nu ontvangt u de Jindustria Party-mail.<br/><br/>Ga naar <b><a href=http://www.jindustria.be/uitschrijven.php>Uitschrijven</a></b> als u de Jindustria Party-mail  niet langer wenst te ontvangen.");
         }
         else
         {
            print("Er is een probleem.<br/>Sorry voor het ongemak.<br/>Stuur een mail naar <b><a href=mailto:webmasters@jindustria.be>de webmasters</a></b>");
         }
         mysql_close($Link);
      }
      else
      {
         print("Uw emailadres zit reeds in onze database.<br/><br/>Ga naar <b><a href=http://www.jindustria.be/uitschrijven.php>Uitschrijven</a></b> als u de Jindustria Party-mail niet langer wenst te ontvangen.");
      }
   }
   else
   {
      print("Dit is <b>geen</b> geldig emailadres");
   }
}
      ?>
    <br/>
    (Ga naar <b><a href=http://www.jindustria.be/uitschrijven.php>Uitschrijven</a></b>
    als u de Jindustria Party-mail niet langer wenst te ontvangen.)

...
</body>
</html>


De Checkmail werkt perfect, als ik een vals adres ingeef geeft hij dit correct weer.
Maar blijkbaar loopt het verder mis.
Wat ik ook doe, ik krijg steeds de "er is een probleem"-melding.

Wat zie ik over het hoofd?

De database ziet er als volgt uit...

Field Type Attributes Null Default
id int(10) UNSIGNED No auto_increment
email varchar(200) No


Het zou ideaal zijn moesten jullie door het bos de bomen nog zien...
Ben te moe,
en het zou eigenlijk al up&running moeten zijn, dermee...

Merci!
ThDC

_________________
- O Lord, raise me to Thy right hand -
- and count me among Thy Saints! -


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 12 Okt 2005 22:26 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
Ik heb je code niet uitgetest, maar volgens mij zit het probleem hier:

Code:
$Query = "INSERT into $TableName values ('0', '$email')";

In bovenstaande regel geef je steeds als id-nummer waarde "0" op, terwijl dat veld een "auto_increment"-optie heeft. Waarschijnlijk heeft het ook de primary_key-functie (om dat zeker te weten, zou je het export-bestand van die tabel 's moeten tonen), en die accepteert natuurlijk geen twee records met dezelfde waarde voor id.

De oplossing is dus: vervang bovenstaande regel door:
Code:
$Query = "INSERT into $TableName (email) values ('$email')";

Gelukt?

To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 12 Okt 2005 22:37 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 12 Jan 2004 0:00
Berichten: 94
Woonplaats: Berchem (Antwerpen)
Nope,
niet echt...
Doet net hetzelfde...

de 0 die ik meegeef gebruik ik altijd,
het is makkelijker in een grote database gewoon te zeggen:
INSERT into $tablename values (....)
dan nog te gaan specifieren in welke velden hij deze waarden moet ingeven.

In ieder geval, die 0 wordt als leeg beschouwd door MySQL en de auto_increment werkt perfect.

Het rare aan heel de zaak is dat ik al een tiental soortgelijke scripts heb geschreven zonder enig probleem...
En nu doet ie moeilijk... Ik snap het dus echt ni...

Toch alvast bedankt om even te kijken!

ThDC

_________________
- O Lord, raise me to Thy right hand -
- and count me among Thy Saints! -


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 12 Okt 2005 23:50 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
doe eens het volgdende:

vervang

$Query = "INSERT into $TableName values ('0', '$email')";

door

$Query = "INSERT into newsletter values ('0', 'test@tes.be')";

voor dit uit en kijk naar het resultaat, lukt het, dan doe je de volgende query:

$Query = "INSERT into $TableName values ('0', 'test@tes.be')";

Als dit niet lukt weet je dat het probleem bij de tablename ligt, anders zoek je verder op dezeflde manier. In je script zelf enkele printjes zetten kan ook leuke resultaten geven. (doe bijv eens print $Query)
En staat er geen error in je error-log file dat met dit te maken heeft ?


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 13 Okt 2005 1:02 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
Tja, dan begint het hier te jeuken om uit te dokteren waarom het niet werkt, natuurlijk. Wat ik dan ook maar gedaan heb. Op de duur kon ik er zelf niet goed meer aan uit (andere MySQL-gewoontes), maar uiteindelijk is het toch gelukt. Met deze code krijg je een correcte en propere (zonder errors of warnings) verwerking:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JINDUSTRIA - Jins Jonas II </title>
<link rel=stylesheet type="text/css" href="css.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
...

<?php
if (!isset($_REQUEST['email'])) {
  $email = "";
} else {
  $email = $_REQUEST['email'];
}

if (!isset($_REQUEST['act'])) {
  $act = "";
} else {
  $act = $_REQUEST['act'];
}

?>

<form action="test_thdc.php?act=check" method="post">
Email:  <input type="text" length="30" name="email" value="<?php echo ($email); ?>" /><br/><br/>
<input type="submit" value="Send" />
</form>

<?
if ($act == 'check')
{
   include_once("checkemail.php");
   if (checkemail($email))
   {               
      $Host = "localhost";
      $User = "sn1314";
      $Password = "****";
      $DBName = "sn1314_3";
      $TableName = "newsletter";

      $Link = mysql_connect ($Host, $User, $Password);
      mysql_select_db($DBName, $Link);
     
      $result = mysql_query("SELECT * FROM $TableName WHERE email='$email'") or die(mysql_error());
      $num_rows = mysql_num_rows($result);

      if ($num_rows == 0)
      {
         $Query = "INSERT into $TableName values ('0', '$email')";
         if (mysql_db_query ($DBName, $Query, $Link))
         {
            print("Uw emailadres werd bijgevoegd aan onze database.<br/>Vanaf nu ontvangt u de Jindustria Party-mail.<br/><br/>Ga naar <b><a href=http://www.jindustria.be/uitschrijven.php>Uitschrijven</a></b> als u de Jindustria Party-mail  niet langer wenst te ontvangen.");
         }
         else
         {
            print("Er is een probleem.<br/>Sorry voor het ongemak.<br/>Stuur een mail naar <b><a href=mailto:webmasters@jindustria.be>de webmasters</a></b>");
         }
         mysql_close($Link);
      }
      else
      {
         print("Uw emailadres zit reeds in onze database.<br/><br/>Ga naar <b><a href=http://www.jindustria.be/uitschrijven.php>Uitschrijven</a></b> als u de Jindustria Party-mail niet langer wenst te ontvangen.");
      }
   }
   else
   {
      print("Dit is <b>geen</b> geldig emailadres");
   }
}
      ?>
    <br/>
    (Ga naar <b><a href=http://www.jindustria.be/uitschrijven.php>Uitschrijven</a></b>
    als u de Jindustria Party-mail niet langer wenst te ontvangen.)

...
</body>
</html>

De bijhorende tabel ziet er zo uit:
Code:
CREATE TABLE `newsletter` (
  `id` int(10) NOT NULL auto_increment,
  `email` varchar(200) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

Deze keer dus wel uitgetest en bij mij werkt alles nu zoals het hoort. Hopelijk in Deurne ook? :wink:

To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 13 Okt 2005 16:26 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 12 Jan 2004 0:00
Berichten: 94
Woonplaats: Berchem (Antwerpen)
Ok,

nu krijg ik dus de volgende error:
Code:
Access denied for user: 'apache@localhost' (Using password: NO)

Waarschijnlijk door de "mysql_error()"
Blijkbaar gaat er dus wel degelijk iets mis met de connectie...

Iemand een idee?
Kan ik hier zelf iets aan doen?


ThDC

_________________
- O Lord, raise me to Thy right hand -
- and count me among Thy Saints! -


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 13 Okt 2005 19:25 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
ThDC schreef:
Ok,

nu krijg ik dus de volgende error:
Code:
Access denied for user: 'apache@localhost' (Using password: NO)

Waarschijnlijk door de "mysql_error()"
Blijkbaar gaat er dus wel degelijk iets mis met de connectie...

Iemand een idee?
Kan ik hier zelf iets aan doen?


ThDC

Aiaiaiai, het zit echt niet mee hé? :wink:

De mysql_error() veroorzaakt geen fout, maar zorgt ervoor dat ze wordt weergeven. Blijkbaar stond er wel nog een foutje in volgende regel:
Code:
      $result = mysql_query("SELECT * FROM $TableName WHERE email='$email'") or die(mysql_error());

Dat moet worden:
Code:
      $result = mysql_query("SELECT * FROM $TableName WHERE email='$email'", $Link) or die(mysql_error());

Nu ook uitgetest op een Scoutnet-account (met mijn localhost was bovenstaand foutje geen probleem), en bij mij werkt het perfect.

Derde keer, goeie keer! 8)

To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 13 Okt 2005 22:25 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 12 Jan 2004 0:00
Berichten: 94
Woonplaats: Berchem (Antwerpen)
Spijtig genoeg niet...
Zelfde foutmelding blijft (Access denied...)

Wist idd dat mysql_error de fout weergaf en niet veroorzaakte,
doelde gewoon op het feit dat ik denk dat er iets misloopt in de connectie.

Heb heel het script al eens gereduceerd tot het minimum (= iets wegschrijven naar de database) en zelfs dan lukt het niet...

Ik kijk nog even verder...


ThDC

_________________
- O Lord, raise me to Thy right hand -
- and count me among Thy Saints! -


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 13 Okt 2005 22:39 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 12 Jan 2004 0:00
Berichten: 94
Woonplaats: Berchem (Antwerpen)
OK, als ik stel dat dit zelfs niet werkt:
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$Host = "localhost";
$User = "sn1314";
$Password = "*****";
$DBName = "sn1314_3";
$TableName = "newsletter";
$Link = mysql_connect ($Host, $User, $Password);
$Query = "INSERT into newsletter values ('0', 'test')";
mysql_db_query ($DBName, $Query, $Link) or die(mysql_error());
?>
</body>
</html>

RESULT = Access denied...

Mag ik dan stellen dat het niet aan mij ligt?
Of ben ik helemaal aan't flippen

ThDC

_________________
- O Lord, raise me to Thy right hand -
- and count me among Thy Saints! -


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 14 Okt 2005 9:58 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Jan 2004 0:00
Berichten: 773
Probeer eens in te loggen met die gebruikersnamen en op die database via de shell:

Code:
mysql -p -u snXXXX snXXXX_XXXX


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 14 Okt 2005 12:12 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
ThDC schreef:
Spijtig genoeg niet...
Zelfde foutmelding blijft (Access denied...)

Dan is er toch echt wat mis met je logingegevens, want met mijn gegevens (sn0725) lukte het wel. Gebruik je de database sn1314_3 al op een andere plaats op je site? Probeer anders eens met de standaarddatabase ($DBName = "sn1314").

To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 14 Okt 2005 15:45 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 12 Jan 2004 0:00
Berichten: 94
Woonplaats: Berchem (Antwerpen)
hopla schreef:
Probeer eens in te loggen met die gebruikersnamen en op die database via de shell:

Code:
mysql -p -u snXXXX snXXXX_XXXX


Krijg dit:
Code:
sn1314@leeuwarden ~ $ mysql -p -u sn1314 sn1314_3
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2301226 to server version: 4.0.24

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


alles blijkt dus in orde, of niet?

ThDC

_________________
- O Lord, raise me to Thy right hand -
- and count me among Thy Saints! -


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 14 Okt 2005 15:52 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 12 Jan 2004 0:00
Berichten: 94
Woonplaats: Berchem (Antwerpen)
To schreef:
ThDC schreef:
Spijtig genoeg niet...
Zelfde foutmelding blijft (Access denied...)

Dan is er toch echt wat mis met je logingegevens, want met mijn gegevens (sn0725) lukte het wel. Gebruik je de database sn1314_3 al op een andere plaats op je site? Probeer anders eens met de standaarddatabase ($DBName = "sn1314").

To


Gebruik sn1314_3 nergens anders...

Juist getest: een woord wegschrijven naar de standaarddatabase (simpele INSERT into test values ('test'); // database met maar 1 veld een VARCHAR email).
En rara... Het werkt niet... Vind dit echt uberstrange...


ThDC

_________________
- O Lord, raise me to Thy right hand -
- and count me among Thy Saints! -


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 14 Okt 2005 16:07 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Jan 2004 0:00
Berichten: 773
Die foutmelding:

Access denied for user: 'apache@localhost' (Using password: NO)

Duidt er eigenlijk op dat apache geen verbinding mag maken met de mysql server... Wat heel raar is, want dan zouden wij ook niet meer aan de db kunnen op onze websites. Ik denk dat er dan ergens iets verkeerd geconfigureerd is? Admins?


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 16 Okt 2005 20:45 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 31 Jul 2002 23:00
Berichten: 236
Citaat:
Access denied for user: 'apache@localhost' (Using password: NO)

Dit lijkt me misschien een fout omdat je een databaseconnectie probeert met apache@localhost ipv snXXX@localhost. Misschien omdat de gebruiker snXXX@localhost ook geen rechten op de subdatabase of tabel heeft?

Ben je wel zeker dat deze tabel aangemaakt is met snXXX met bvb. phpmyadmin?


Caygull.


Omhoog
 Profiel  
 
Berichten weergeven van de afgelopen:  Sorteer op  
Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 15 berichten ] 

Alle tijden zijn UTC + 1 uur


Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten


U mag geen nieuwe onderwerpen plaatsen in dit forum
U mag geen reacties plaatsen op onderwerpen in dit forum
U mag uw berichten niet wijzigen in dit forum
U mag uw berichten niet verwijderen in dit forum
U mag geen bijlagen plaatsen in dit forum

Zoeken naar:
Ga naar:  
Powered by phpBB® Forum Software © phpBB Group
Vertaald door phpBBservice.nl.