Ik wil dat mensen een groep kunnen maken via mijn .php script en mensen kunnen inviten en dat mensen daar kunnen applyen.

nou heb ik zoiets gemaakt:
amar ik ben echt een beginner en krijg insta errors :D


<?php
include("config.php");

if (isset($_POST['Submit'])){

$_POST['groupname'] = substr($_POST['groupname'],0,16);
if(preg_match('/^[A-Za-z0-9_\-]+$/',$_POST['groupname'])) {

$name= $_POST['groupname'];
$leader = "huskyhond";

mysql_query("INSERT INTO `[groups]`(name,leader) values('$name','$leader')");
mysql_query("UPDATE `[users]` SET `clan`='{$name}',`leader`='1' WHERE `login`='{$leader}'");

print <<<ENDHTML
<form name="form1" method="post">
        <table width="50%" border="0" align="center">
          <tr>
            <td>Group Name:</td>
            <td><input name="groupname" type="text" id="groupname" maxlength="20"></td>
          </tr>
          <tr>
            <td colspan="2"><div align="center">
                <input type="submit" name="Submit" value="Create Clan">
              </div></td>
          </tr>
        </form>
        </table>
ENDHTML;
print "De Crew is aangemaakt!\n<script language=\"javascript\">\nsetTimeout(\"parent.window.location.reload()\",1000)\n</script>\n";
}
 else {
print "<font color=red>Error!</font>";
}
?>
wat is de error?
Volgens mij is dat niet van belang omdat heel het script fout is volgens mij :D maar hier is de error:
Parse error: syntax error, unexpected $end in /home/qupnehsv/domains/leagueteam.net/public_html/groups.php on line 35
ik zie enkel "{" en nergens "}"

Toevoeging op 28/06/2011 14:53:49:

je opent iets en sluit het niet af ( of is dit niet de volledige code)

-( ben ook maar een beginner )-
klopt daarmee print ik de error, of niet.

print "De Crew is aangemaakt!\n<script language=\"javascript\">\nsetTimeout(\"parent.window.location.reload()\",1000)\n</script>\n";
}
 else {
print "<font color=red>Error!</font>";
}
Je opent op regel 4 en 7 een { maar sluit hem maar 1 keer af op regel 34. Zet op regel 35 eens een }.
dat heb ik gedaan nou krijg ik gewoon een witte pagina :D (at least iets anders)

<?php
include("config.php");

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$_POST['groupname'] = substr($_POST['groupname'],0,16);
	if(preg_match('/^[A-Za-z0-9_\-]+$/',$_POST['groupname']))
	{

	$name= htmlentities($_POST['groupname']);
	$leader = "huskyhond";

$sql = "
    INSERT INTO groups
    (
        name,
        leader
    )
    VALUES
    (
        '".mysql_real_escape_string($name)."',
        '".$leader."'
    )
";

if(!$res = mysql_query($sql))
{
    trigger_error(mysql_error());
}
else
{
	$sql = "
		UPDATE
		    users
		SET
		    clan = '".mysql_real_escape_string($name)."',
			leader = 1
		WHERE
		    login = '".$leader."'
	";

	if(!$res = mysql_query($sql))
	{
		trigger_error(mysql_error());
	}
	elseif(mysql_affected_rows() > 0)
	{
		$melding = "De Crew is aangemaakt!";
	}
}
}
}
if(isset($melding)){echo $melding;}
?>
<form name="form1" method="post">
        <table width="50%" border="0" align="center">
          <tr>
            <td>Group Name:</td>
            <td><input name="groupname" type="text" id="groupname" maxlength="20"></td>
          </tr>
          <tr>
            <td colspan="2"><div align="center">
                <input type="submit" name="Submit" value="Create Clan">
              </div></td>
          </tr>
        </table>
        </form>


Neem deze code niet zomaar over maar ga eens kijken wat ik anders heb gedaan...
Hallo [google]SQL Injectie[/google]..
Even wat tips:

- Een POST-controle voor je formulier doe je met:
if($_SERVER['REQUEST_METHOD']=="POST") {

En niet met een isset (zie lijn 4)

- Variabelen overnemen is onnodig (lijn 9), je kan prima $_POST['groupname'] overal gebruiken

- Waar is je foutafhandeling op je query? Zie ook dit artikel.

- Backtics (````) horen niet in queries thuis, ook brackets zoals [ en ] zijn overbodig en hebben geen meerwaarde (waarom gebruik je ze?)

- Vermijd gewoon construties als: <<<ENDHTML. Je kan prima je HTML in de print of echo gooien. Eventuele variabelen horen daar dan uiteraard buiten quotes. Dit mis ik op lijn 12.

- {$bla}-contructies zijn onnodig, gebruik gewoon zoals ik al zei: variabelen buiten quotes. Veel netter.

- Je bent hackbaar met SQL-injection. Iedereen kan je querie zomaar even aanpassen met eventuele gevolgen van dien.

- Ik mis de fouten-afhandeling met deze code bovenaan je PHP-script:

error_reporting(E_ALL);
ini_set('display_errors',1);


Dus: Zet het mes maar in de code.........
Bedankt allemaal zou dit dalijk even goed doornemen kwa SQL injectie zou ik maar is goed kijken want da moet ik niet hebben :P

Reageren