Hey,

Omdat er helaas niet is gereageerd op mijn aanvraag heb ik geprobeerd zelf profielpagina's bij mijn loginsysteem te maken (PhpMyLogon). Aangezien ik een newbie ben in PHP heeft het mij veel moeite gekost dat te maken. Het is óf redelijk gelukt of ik heb er niets van gebakken. De code (profile.php):

<?php

//Profielpagina's

include_once("config.php");
include_once("lang/lang_".$lang.".php");
$pml_title = $site_name;
include("htmltop.php");
include_once("connect.php");

if(isset($_GET['id'])) {
 if(isset($_GET['name'])) {
  $sql = "SELECT id,name FROM `".$db_tbl."` WHERE id='".$_GET['id']."'";
  $query = mysql_query($sql);
  $row = mysql_fetch_object($query);
  $dbid = htmlspecialchars($row->id);
?>
<table>
 <tr>
  <td><b><?= $memberlist_username ?></b></td>
 </tr>
 <?
 $sql = "SELECT name,active FROM `".$db_tbl."` ORDER BY name ASC";
 $query = mysql_query($sql);
 while($row = mysql_fetch_object($query)) {
  $name = htmlspecialchars($row->name);
  $active = htmlspecialchars($row->active);
  if($active == 0) {
   echo "<tr>\n";
   echo "<td><a href=\"?id=".$id."><font color=\"red\">".$name."</font></a></td>\n";
   echo "</tr>\n";
  }else{
   echo "<tr>\n";
   echo "<td><a href=\"?id=".$id.">".$name."</a></td>\n";
   echo "</tr>\n";
  }
 }
 ?>
</table>
<p />
<small><?= $memberlist_deactusernote ?></small>
<?php
if($query == TRUE) {
header("Location: profile.php?id=".$_GET['id']."");
echo "<table border=\"0\" width=\"500\">;
echo "<tr><td>Naam:</td><td>".$name."</td></tr>;
echo "<tr><td>Missie:</td><td>".$missie."</td></tr>;
echo "<tr><td>Ruimte:</td><td>".$ruimte."</td></tr>;
echo "<tr><td>Groep:</td><td>".$groep."</td></tr>;
echo "<tr><td>Stafflid:</td><td>".$stafflid."</td></tr>;
echo "</table>";
}else{
echo $error;
}
?>
<?
include("htmlbottom.php");
?>


Ik weet dat er fouten in zitten, waarschijnlijk met name in het gedeelte if($query == TRUE). Dat heb ik er zonder reden tussen gegooid.. :)
Ik denk dat jullie het doel van de pagina wel snappen. Op de site www.mijnpagina.nl/profile.php staat een lijst van de gebruikers. Als je er een aanklikt, kom je op de profielpagina van de gebruiker met het bijbehorende id (vb.-url: www.mijnpagina.nl/profile.php?id=1).

O ja, nog één ding. Als ik de pagina uitprobeer, krijg ik de volgende error:
Parse error: syntax error, unexpected '>' in /storage... etc etc.

Iemand enig idee hoe dit op te lossen valt/of het op te lossen is? Bij voorbaat dank voor je reactie.

Met vriendelijke groet,
Cas
Zet even code-tags [ignore]
 en 
[/ignore] om je code heen.

Die error komt doordat je diverse echo's niet afsluit.
Gedaan, het is inderdaad wat duidelijker nu.
SanThe schreef op 13.09.2009 23:00
Die error komt doordat je diverse echo's niet afsluit.

Regel 45 en verder. Zie de kleurtjes.

<?php

//Profielpagina's

include_once("config.php");
include_once("lang/lang_".$lang.".php");
$pml_title = $site_name;
include("htmltop.php");
include_once("connect.php");

if(isset($_GET['id'])) {
 if(isset($_GET['name'])) {
  $sql = "SELECT id,name FROM `".$db_tbl."` WHERE id='".$_GET['id']."'";
  $query = mysql_query($sql);
  $row = mysql_fetch_object($query);
  $dbid = htmlspecialchars($row->id);
?>
<table>
 <tr>
  <td><b><?= $memberlist_username ?></b></td>
 </tr>
 <?
 $sql = "SELECT name,active FROM `".$db_tbl."` ORDER BY name ASC";
 $query = mysql_query($sql);
 while($row = mysql_fetch_object($query)) {
  $name = htmlspecialchars($row->name);
  $active = htmlspecialchars($row->active);
  if($active == 0) {
   echo "<tr>\n";
   echo "<td><a href=\"?id=".$id."><font color=\"red\">".$name."</font></a></td>\n";
   echo "</tr>\n";
  }else{
   echo "<tr>\n";
   echo "<td><a href=\"?id=".$id.">".$name."</a></td>\n";
   echo "</tr>\n";
  }
 }
 ?>
</table>
<p />
<small><?= $memberlist_deactusernote ?></small>
<?php
if($query == TRUE) {
header("Location: profile.php?id=".$_GET['id']."");
echo "<table border=\"0\" width=\"500\">";
echo "<tr><td>Naam:</td><td>".$name."</td></tr>";
echo "<tr><td>Missie:</td><td>".$missie."</td></tr>";
echo "<tr><td>Ruimte:</td><td>".$ruimte."</td></tr>";
echo "<tr><td>Groep:</td><td>".$groep."</td></tr>";
echo "<tr><td>Stafflid:</td><td>".$stafflid."</td></tr>";
echo "</table>";
}else{
echo $error;
}
?>
<?
include("htmlbottom.php");
?>


Daarnaast zou ik geen PhpMyLogon gebruiken.
Pepijn schreef op 14.09.2009 11:51

<?php

//Profielpagina's

include_once("config.php");
include_once("lang/lang_".$lang.".php");
$pml_title = $site_name;
include("htmltop.php");
include_once("connect.php");

if(isset($_GET['id'])) {
 if(isset($_GET['name'])) {
  $sql = "SELECT id,name FROM `".$db_tbl."` WHERE id='".$_GET['id']."'";
  $query = mysql_query($sql);
  $row = mysql_fetch_object($query);
  $dbid = htmlspecialchars($row->id);
?>
<table>
 <tr>
  <td><b><?= $memberlist_username ?></b></td>
 </tr>
 <?
 $sql = "SELECT name,active FROM `".$db_tbl."` ORDER BY name ASC";
 $query = mysql_query($sql);
 while($row = mysql_fetch_object($query)) {
  $name = htmlspecialchars($row->name);
  $active = htmlspecialchars($row->active);
  if($active == 0) {
   echo "<tr>\n";
   echo "<td><a href=\"?id=".$id."><font color=\"red\">".$name."</font></a></td>\n";
   echo "</tr>\n";
  }else{
   echo "<tr>\n";
   echo "<td><a href=\"?id=".$id.">".$name."</a></td>\n";
   echo "</tr>\n";
  }
 }
 ?>
</table>
<p />
<small><?= $memberlist_deactusernote ?></small>
<?php
if($query == TRUE) {
header("Location: profile.php?id=".$_GET['id']."");
echo "<table border=\"0\" width=\"500\">";
echo "<tr><td>Naam:</td><td>".$name."</td></tr>";
echo "<tr><td>Missie:</td><td>".$missie."</td></tr>";
echo "<tr><td>Ruimte:</td><td>".$ruimte."</td></tr>";
echo "<tr><td>Groep:</td><td>".$groep."</td></tr>";
echo "<tr><td>Stafflid:</td><td>".$stafflid."</td></tr>";
echo "</table>";
}else{
echo $error;
}
?>
<?
include("htmlbottom.php");
?>


Daarnaast zou ik geen PhpMyLogon gebruiken.


Edit: Ik heb nu de code aangepast. Ik krijg nu de error:
Parse error: syntax error, unexpected $end in /storage... etc etc.
Wat zit er nu fout? Ik ga nog even kijken, indien iemand het weet, graag een reactie!

@Pepijn: Waarom geen PhpMyLogon gebruiken?

Cas
@Cas: Ik gok op veroudering... Anyway, waarom gebruik je mysql_fetch_object() als ik vragen mag? Waarom allemaal dat ge-htmlspecialchars()? Ohja, en de backtics mogen uit je query :).
Je sluit niet alles af.

( => 20
) => 20
{ => 7
} => 5
[ => 4
] => 4
' => 11
" => 78
@Jezpur:
Heb niet veel kennis van php maar heb geprobeerd de profielpagina te bouwen. Dat deed ik door 2 codes te combineren, nl. :

Lijst van gebruikers:
<?php
###################################
##   PHPMYLOGON: A LOGIN SYSTEM  ##
##    (c) 2006 Jorik Berkepas    ##
##   Under the GNU GPL license   ##
##     [email protected]      ##
###################################

// Overzicht van alle members

include_once("config.php");
include_once("lang/lang_".$lang.".php");
$pml_title = $site_name;
include("htmltop.php");
include_once("connect.php");

?>
<table>
 <tr>
  <d><b><?= $memberlist_username ?></b></td>
 </tr>
 <?
 $sql = "SELECT name,active FROM `".$db_tbl."` ORDER BY name ASC";
 $query = mysql_query($sql);
 while($row = mysql_fetch_object($query)) {
  $name = htmlspecialchars($row->name);
  $active = htmlspecialchars($row->active);
  if($active == 0) {
   echo "<tr>\n";
   echo "<td><font color=\"red\">".$name."</font></td>\n";
   echo "</tr>\n";
  }else{
   echo "<tr>\n";
   echo "<td>".$name."</td>\n";
   echo "</tr>\n";
  }
 }
 ?>
</table>
<p />
<small><?= $memberlist_deactusernote ?></small>
<?

include("htmlbottom.php");
?>


Pagina om account te activeren (aangezien deze pagina met id's werkt dacht ik er wat aan te hebben).
<?php
###################################
##   PHPMYLOGON: A LOGIN SYSTEM  ##
##    (c) 2006 Jorik Berkepas    ##
##   Under the GNU GPL license   ##
##     [email protected]      ##
###################################

// Page for account activation after password reset or registration

include_once("config.php");
include_once("lang/lang_".$lang.".php");
$pml_title = $site_name;
include("htmltop.php");
include_once("connect.php");

if(isset($_GET['id'])) {
 if(isset($_GET['code'])) {
  $sql = "SELECT id,actcode,active FROM `".$db_tbl."` WHERE id='".$_GET['id']."'";
  $query = mysql_query($sql);
  $row = mysql_fetch_object($query);
  $dbid = htmlspecialchars($row->id);
  $dbcode = htmlspecialchars($row->actcode);
  $active = htmlspecialchars($row->active);
  if($active == 0) {
   if($dbcode == $_GET['code']) {
    if(isset($_GET['activate'])) {
     // Activate after password reset; remain old password (false password reset)
     $sql = "UPDATE `".$db_tbl."` SET active=1,actcode='' WHERE id='".$_GET['id']."'";
     $query = mysql_query($sql);
     if($query == TRUE) {
      echo $activate_pass;
     }else{
      echo $error;
     }
    }elseif(isset($_GET['registration'])) {
     // Activate after registration
     $sql = "UPDATE `".$db_tbl."` SET active=1,actcode='' WHERE id='".$_GET['id']."'";
     $query = mysql_query($sql);
     if($query == TRUE) {
      echo $activate_reg;
     }else{
      echo $error;
     }
    }else{
     if(isset($_POST['submit'])) {
      // Execute
      if($_POST['pass1'] == $_POST['pass2']) {
       $md5pass = md5($_POST['pass1']);
       $sql = "UPDATE `".$db_tbl."` SET password='".$md5pass."',active=1,actcode='' WHERE id='".$_GET['id']."'";
       $query = mysql_query($sql);
       if($query == TRUE) {
        echo $activate_pass2;
       }else{
        echo $error;
       }
      }else{
       echo $activate_pascheck;
      }
     }else{
      // Form password change
      ?>
      <form method="post" action="activate.php?id=<?= $_GET['id'] ?>&code=<?= $_GET['code'] ?>">
       <table>
        <tr>
         <td><label for="pass1"><?= $activate_newpass ?>:</label></td><td><input id="pass1" type="password" name="pass1" /></td>
        </tr>
        <tr>
         <td><label for="pass2"><?= $activate_repeat ?>:</label></td><td><input id="pass2" type="password" name="pass2" /></td>
        </tr>
        <tr>
         <td></td><td><input type="submit" name="submit" value="<?= $activate_chngpass ?>" /></td>
        </tr>
       </table>
      </form>
      <?
     }
    }
   }else{
    echo $activate_falsecode;
   }
  }else{
   echo $activate_nodeactivate;
  }
 }else{
  header("Location: activate.php?uid=".$_GET['id']."");
 }
}else{
 // Formulier
 ?>
 <form method="get" action="activate.php" >
  <table>
   <tr>
    <td><label for="id"><?= $activate_userid ?>:</label></td><td><input type="text" id="id" name="id" maxlength="5" <? if(isset($_GET['uid'])) { echo "value=\"".$_GET['uid']."\""; } ?>/></td>
   </tr>
   <tr>
    <td><label for="code"><?= $activate_actcode ?>:</label></td><td><input id="code" type="text" name="code" maxlength="15" /></td>
   </tr>
   <tr>
    <td align="right"><input id="activate" type="checkbox" name="activate" value="yes" style="border: 0px" /></td><td><label for="activate"><?= $activate_keepcurrentpas ?></label></td>
   </tr>
   <tr>
    <td></td><td><input type="submit" value="<?= $activate_act ?>" /></td>
   </tr>
  </table>
 </form>
 <?
}


include("htmlbottom.php");
?>

Zoals je ziet heb ik gewoon delen van bovenstaande codes gekopieerd en aangepast in hoeverre ik dat nodig achtte. Misschien geen slimme zet.. Maar ik moet wat ;)

Cas
SanThe schreef op 14.09.2009 15:23
Je sluit niet alles af.

( => 20
) => 20
{ => 7
} => 5
[ => 4
] => 4
' => 11
" => 78


Kzal het allemaal wel aanpassen en dan zien wat er gebeurt.
Bedankt!

Cas

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.
PhpMyLogon is verouderd, de maker hiervan raad mensen ook aan om dit vooral NIET te gebruiken :)

Reageren