Archief - php: wat is er verkeerd?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

-Vipr-

Legacy Member
Ik wou dus even voor te zien of mijn form werkt een variable afdrukken -> $db_username hier maar hij onthoud die variable persies niet ....

PHP:
<link rel="stylesheet" href="blue/cq.css" type="text/css">
 
<?
include ('connect.php');
 
if ($_POST['action'])
{
 echo $_POST['$db_username'];
  
 $db_encrypt=md5($db_password);
 $select="select * from drregister";
 $res_select=mysql_query($select);
 while($list=mysql_fetch_object($res_select))
 {
  $username=$list->username;
  
  $databaseusername = strtoUpper($username);
  $registerusername = strtoUpper($db_username);
   
  if ($registerusername == $databaseusername)
  {
   $i=1;
  }
 } 
 if (($i!=1) && ($db_username!="") && ($db_password!="") && ($db_email!=""))
 {
  if (($db_password==$password2) && (eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $db_email)))
  {
   mail('[email protected]', 'Buf Clansite', $db_username, "From: Buf ");
   $db_date=date("D M j G:i:s Y");
   $insert="INSERT INTO buf_register (username,pass,email,date)
   VALUES ('$db_username','$db_encrypt','$db_email','$db_date')";
   $res_insert = mysql_query($insert);
   echo "<center><br><br>Your registration is complete!<br><br>";
   echo "<center>The Admin will grant you access as fast as possible<br><br>"; 
  }	
 }
 elseif ($i==1)
 {
   header ("Location: register.php?fout=1");
 }
}
if (!$_POST['action'])
{
 if ($fout == 1)
 {
  echo"That username allready exists";
 }
 echo"<center>";
 echo"<form method=POST>";
 echo"<k2> Please fill in this form to register!</k2> ";
 echo"<br>";
 echo"<br>";
 echo"<table border=0 rules=none>";
 echo"<tr><td align=center><k>Username</k></th>";
 echo"<tr><td align=left><input type=text name=db_username class=input>";
 echo"<tr><td align=center><k>Password</k>";
 echo"<tr><td align=left><input type=password name=db_password class=input>";
 echo"<tr><td align=center><k>Enter password again</k>";
 echo"<tr><td align=left><input type=password name=password2 class=input>";
 echo"<tr><td align=center><k>Email</k>";
 echo"<tr><td align=left><input type=text name=db_email class=input>";
 echo"</tr>";
 echo"<tr><td align=center colspan=2 height=10><input type=submit name=action value=toevoegen class=input></td>";		
 echo"</table>";
 echo"</center>";  
}  
echo"<a href=index.php>Naar Login</a>";
?>

structuur komt nog :p

QplQyer

Legacy Member
Is u variabele dan wel al geinitialiseerd?
geeft ge ze mee via de bla.php?db_username=blah ofzo? want anders ziek daar weinig initialisatie staan, buiten dan mss in connect.php ofzo?

-Vipr-

Legacy Member
QplQyer zei:
Is u variabele dan wel al geinitialiseerd?
geeft ge ze mee via de bla.php?db_username=blah ofzo? want anders ziek daar weinig initialisatie staan, buiten dan mss in connect.php ofzo?
moet toch niet....
die 2 actions hangen aan elkaar dan moete niks in uwwe url zette :)

if ($_POST['action'])
<input type=submit name=action value=toevoegen class=input>

QplQyer

Legacy Member
erh? snap niet wat je wil zeggen sorry, aan elkaar hangen?

ik bedoel gewoon dat je nergens een waarde geeft aan db_username, dus dat het daar mss aan ligt dat em het niet afprint?

-Vipr-

Legacy Member
QplQyer zei:
erh? snap niet wat je wil zeggen sorry, aan elkaar hangen?

ik bedoel gewoon dat je nergens een waarde geeft aan db_username, dus dat het daar mss aan ligt dat em het niet afprint?
ik geef toch een waarde in die form....
ge vult eerst die waardes in in mijn forumulier dan is $_POST['action']
dan gaat hij zien wat er in staat...

sneax

Legacy Member
-Vipr- zei:
structuur komt nog :p

Als ge moet 'structuur' tabs bedoelt enzo om uw code 'leesbaarder' te maken dan moet ik u wel zeggen dagge in de omgekeerde volgorde bezig zijt. Die opmaak van uw code zorgt er juist voor dagge fouten makkelijker vindt.

CyBeRRaT

Legacy Member
zoude is ni proberen een form action toe te kennen? lijkt mij wel handig...

btw, als't ni just is, sorry, maar is al een half jaar geleden da'k nog iets met html en php heb gedaan....

-Vipr-

Legacy Member
CyBeRRaT zei:
zoude is ni proberen een form action toe te kennen? lijkt mij wel handig...

btw, als't ni just is, sorry, maar is al een half jaar geleden da'k nog iets met html en php heb gedaan....
zo werkt het ook hoor :)

Correctie: zou het moeten werken :p

-Vipr-

Legacy Member
sneax zei:
Als ge moet 'structuur' tabs bedoelt enzo om uw code 'leesbaarder' te maken dan moet ik u wel zeggen dagge in de omgekeerde volgorde bezig zijt. Die opmaak van uw code zorgt er juist voor dagge fouten makkelijker vindt.
ja ik weet het maar ik vind hier alles direcht in ...
kvind het ordelijk :p

-Vipr-

Legacy Member
kheb het op een andere hosting gezet en daar werkt het wel ....

Hoe kan dit ??? :wtf:

Cakeman

Legacy Member
Het zal wel iets met register globals ofzo zijn.

Probeer op de oude server eens met dit:
echo $_POST['$db_username'];

-Vipr-

Legacy Member
Cakeman zei:
Het zal wel iets met register globals ofzo zijn.

Probeer op de oude server eens met dit:
echo $_POST['$db_username'];
hopeloos noem ik dat da wilt hij ook ni doen ...
kzal wel is vragen dat die een nieuwere versie van php eropzet ofzo ?.... :s

EdMeister

Legacy Member
Sluit om te beginnen als eens je <form>-tag af. Dit is niet de oorzaak van je probleem, maar het maakt je code veel properder.
En gebruik niet zoveel echo's. Hou je html zoveel mogelijk buiten je php-blokken zodat je niet altijd moet gaan echo'en.

Schrijf dus bijv.
PHP:
<?php
// php-code
?>
<html>
...
<?php
// php-code
?>
in plaats van
PHP:
<?php
echo "<html>";
?>

Maar nu de essentie van je probleem: het heeft volgens mij alles te maken met register_globals. Op hosts met een versie van PHP hoger dan 4.2.x (waar register_globals standaard uitgeschakeld staan) moet je POST- en GET-variabelen opvragen met $_POST['naam_van_je_formulierveld'] of $_GET['naam_van_je_formulierveld'] ipv $naam_van_je_formulierveld.
Verander al die variabelen die uit je formulier komen en het zou wel moeten werken (als je logische structuur natuurlijk goed in elkaar zit, daar heb ik niet op gelet).

-Vipr-

Legacy Member
drwowman zei:
bah jong, zo'n lelijke code, .. gebruikt nekeer een tabke
in mijn code staan allemaal tabs enz ... maar als ik da gecopyeerd had dan stonde die daar niet ..... :s kan ik er aan doen ?????

----> heb opnieuw code eringezet :)

beton

Legacy Member
-Vipr- zei:
in mijn code staan allemaal tabs enz ... maar als ik da gecopyeerd had dan stonde die daar niet ..... :s kan ik er aan doen ?????

----> heb opnieuw code eringezet :)

veel mooier zo ;)

QplQyer

Legacy Member
-Vipr- zei:
ik geef toch een waarde in die form....
ge vult eerst die waardes in in mijn forumulier dan is $_POST['action']
dan gaat hij zien wat er in staat...

my bad, niet gezien dat dat form er ook nog instond.
Nu ja alle hulp is al gegeven, goed.
(mss toch een goed idee om de "" te plaatsen in uw forms ook ipv name=db_username dus name="db_username" sommige browsers hebben daar nogal probs mee).

niet zoveel toebrengende post maar soit.

killgore

Legacy Member
Cakeman zei:
Het zal wel iets met register globals ofzo zijn.

Probeer op de oude server eens met dit:
echo $_POST['$db_username'];
ow jeez, ik snap niet dat hier nog niemand anders geantwoord heeft:

tis $_POST['db_username']

en nu is naar uw code kijken.

killgore

Legacy Member
PHP:
 <link rel="stylesheet" href="blue/cq.css" type="text/css">

<?
include ('connect.php');

if (isset($_POST['action']) && $action == 'toevoegen')
{
 $db_username =  isset($_POST['db_username'])?$_POST['db_username']:'';
 $db_password = isset($_POST['db_password'])?$_POST['db_password']:'';
 $password2 = isset($_POST['password2'])?$_POST['password2']:'';
 $db_email = isset($_POST['db_email'])?$_POST['db_email']:'';

 $db_encrypt=md5($db_password);
 $select = "SELECT username FROM drregister";
 $res_select = mysql_query($select) or die(mysql_error());
  
while($list=mysql_fetch_object($res_select))
 {
  $username=$list->username;
  
  $databaseusername = strtoUpper($username);
  $registerusername = strtoUpper($db_username);
   
  if ($registerusername == $databaseusername)
  {
   $i=1;
  }
 } 
 if (($i!=1) && ($db_username!="") && ($db_password!="") && ($db_email!=""))
 {
  if (($db_password==$password2) && (preg_match("#^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$#i", $db_email)))
  {
   mail('[email protected]', 'Buf Clansite', $db_username, "From: Buf ");
   $db_date=date("D M j G:i:s Y");
   $insert="INSERT INTO buf_register (username,pass,email,date)
   VALUES ('$db_username','$db_encrypt','$db_email','$db_dat  e')";
   $res_insert = mysql_query($insert);
   echo "<center><br><br>Your registration is complete!<br><br>";
   echo "<center>The Admin will grant you access as fast as possible<br><br>"; 
  }    
 }
 elseif ($i==1)
 {
   header ("Location: register.php?fout=1");
 }
}
if (!$_POST['action'])
{
 if (isset($_GET['fout']) && $_GET['fout'] == 1)
 {
  echo"That username allready exists";
 }
 echo"<center>";
 echo"<form method=POST>";
 echo"<k2> Please fill in this form to register!</k2> ";
 echo"<br>";
 echo"<br>";
 echo"<table border=0 rules=none>";
 echo"<tr><td align=center><k>Username</k></th>";
 echo"<tr><td align=left><input type=text name=db_username class=input>";
 echo"<tr><td align=center><k>Password</k>";
 echo"<tr><td align=left><input type=password name=db_password class=input>";
 echo"<tr><td align=center><k>Enter password again</k>";
 echo"<tr><td align=left><input type=password name=password2 class=input>";
 echo"<tr><td align=center><k>Email</k>";
 echo"<tr><td align=left><input type=text name=db_email class=input>";
 echo"</tr>";
 echo"<tr><td align=center colspan=2 height=10><input type=submit name=action value=toevoegen class=input></td>";        
 echo"</table>";
 echo"</center>";  
}  
echo"<a href=index.php>Naar Login</a>";
?>

meeste fouten eruit, kan nog syntaxis foutje van mij inzitten
Enkele punten:
1) Ga werken met true en false, ipv van je domme 1 en niet 1 (n/o).
2) Leer mysql, je kan met 1 query zoeken of die username al bestaat en dan moet je niet zo een extreem lange while gebruiken.
3) VOOR IEDEREEN (aangezien ik dit nog pokke veel zie): Leer eens dat html echo'en met php ZEER onhandig is, het is niet enkel trager, maar ook nog eens moeilijker om html fouten op te sporen, je moet meer escapen, ..., gebruik wat meer <?php en ?> tags of een template systeem
4) http://be2.php.net/globals
5) http://be2.php.net/mysql_error

Da zijn denk ik de voornaamste zaken die u script gewoon ongelofelijk slecht maken. Ma troost u, das normaal als ge een beginner zijt, ik kan mij niet voorstellen dat iemand van in het begin een deftig script als dat maakt (behalve Bart_Simpson### natuurlijk). Enkel: als iemand u raad geeft zoals die $_POST te gebruiken, ga dan eerst opzoeken en proberen voor je zijn raad redelijk snel afwimpelt met de "maar toch" zinnen.

EdMeister

Legacy Member
killgore zei:
ow jeez, ik snap niet dat hier nog niemand anders geantwoord heeft:

tis $_POST['db_username']

en nu is naar uw code kijken.
Even mezelf quoten:
Maar nu de essentie van je probleem: het heeft volgens mij alles te maken met register_globals. Op hosts met een versie van PHP hoger dan 4.2.x (waar register_globals standaard uitgeschakeld staan) moet je POST- en GET-variabelen opvragen met $_POST['naam_van_je_formulierveld'] of $_GET['naam_van_je_formulierveld'] ipv $naam_van_je_formulierveld.
Verander al die variabelen die uit je formulier komen en het zou wel moeten werken (als je logische structuur natuurlijk goed in elkaar zit, daar heb ik niet op gelet).
Threadstarter moet zijn antwoorden iets grondiger lezen...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan