Smarty Forum Index Smarty
The discussions here are for Smarty, a template engine for the PHP programming language.
Dedicated server web hosting provided by Guru-host.eu.
help with user.php and user.tpl array

 
Post new topic   Reply to topic    Smarty Forum Index -> General
View previous topic :: View next topic  
Author Message
winracer
Smarty Rookie


Joined: 15 Dec 2009
Posts: 12

PostPosted: Fri Mar 23, 2012 4:51 pm    Post subject: help with user.php and user.tpl array Reply with quote

can I ask a question about smarty ..... I am adding spam checker from http://www.stopforumspam.com
in admin user.php and user.tpl I am trying to look at the IP address of the user and if in stopforumspam database user is a spammer and if not user is not a spammer. but I am getting same IP for every user in my code..

user.php around line 30 is what I am adding // Start spam checker http://www.stopforumspam.com



Code:

<?php
/*
********************
 - Admin Users
********************
*/

/* List Users */
/* Grab Results from DB */     
$userquery  = sprintf("SELECT SQL_CALC_FOUND_ROWS * FROM phpdir_users ORDER BY id DESC LIMIT %d,%d", SmartyPaginate::getCurrentIndex(), SmartyPaginate::getLimit());
$userresult = mysql_query($userquery) or die("MySql Error: ".mysql_error());
/* Display via Array */
$userdata = array();
$data = array($userrow['ip']);
$i=0;
/* Create While to make array */
while ($userrow = mysql_fetch_array($userresult)) {
    $usertmp = array(
        "id" => $userrow['id'],
        "username" => $userrow['username'],
        "email" => $userrow['email'],
        "ip" => $userrow['ip'],
        "registerdate" => $userrow['registerdate'],
        "website" => $userrow['website'],
        "admin" => $userrow['admin'],
        "isbanned" => $userrow['isbanned'],
   
);

// Start spam checker http://www.stopforumspam.com
$addr = $userrow['ip'];
$response = file_get_contents('http://www.stopforumspam.com/api?ip='.$addr);
$pattern = '/<appears>yes<\/appears>/';
$pattern1 = '/<appears>no<\/appears>/';
if (preg_match($pattern, $response)) {
//require_once( './stopspammer.html' );
//exit();
$spam = "$addr<br> Spammer";
    $smarty->assign('spam', $spam);

}
if (preg_match($pattern1, $response)) {
//require_once( './stopspammer.html' );
//exit();
$spam = "$addr<br> NO-Spammer";
    $smarty->assign('spam', $spam);
}


// end spam checker http://www.stopforumspam.com






    /* Tell Data is equal to Temp */
    $userdata[$i++] = $usertmp;

}





/* Set Smarty URL */
SmartyPaginate::setURL('index.php?id=users');

/* Calculate Total Rows */
$usertotalquery = mysql_query("SELECT COUNT(*) FROM phpdir_users");
$usertotal = mysql_fetch_array($usertotalquery);
SmartyPaginate::setTotal($usertotal[0]);

/* Assign Var */
$smarty->assign('userdata', $userdata);

/* Delete User */
if(isset($_GET['userdelete'])){
    $query = "DELETE FROM phpdir_users WHERE id='".$_GET['userdelete']."'";
    if(!mysql_query($query)){
        echo mysql_error();
    }
    echo '<meta http-equiv="Refresh" content="0; url=index.php?id=users" />';
}

/* User Update */
if(isset($_GET['userupdate'])) {
    /* Find URL Value */
    $id = $_GET['userupdate'];
    /* Grab Results from DB */
    $query  = "Select * FROM phpdir_users WHERE ID = $id";
    $result = mysql_query($query);
    /* Display Results */
    $user    = mysql_fetch_array($result);
    /* Assign Values to Smarty */
    $smarty->assign('user_id', $user['id']);
    $smarty->assign('user_username', $user['username']);
    $smarty->assign('user_email', $user['email']);
        $smarty->assign('user_ip', $user['ip']);
$smarty->assign('user_website', $user['website']);
$smarty->assign('user_admin', $user['admin']);
   
    if(isset($_POST['done'])) {
        $userid   = $_GET['userupdate'];
        $username1 = $_POST['username'];
        $email    = $_POST['email'];
        $ip    = $_POST['ip'];
        $website   = $_POST['website'];
        $admin    = $_POST['admin'];

        // update data in mysql database
        $sql    = "UPDATE phpdir_users SET username='$username1', email='$email', admin='$admin' , ip='$ip', website='$website' WHERE id='$userid'";
        $result = mysql_query($sql);
       
        if(isset($result)){
            /* Find URL Value */
            $id     = $_GET['userupdate'];
            /* Grab Results from DB */
            $query  = "Select * FROM phpdir_users WHERE ID = $id";
            $result = mysql_query($query);
            /* Display Results */
            $user    = mysql_fetch_array($result);
            /* Assign Values to Smarty */
            $smarty->assign('user_id', $user['id']);
            $smarty->assign('user_username', $user['username']);
            $smarty->assign('user_email', $user['email']);
            $smarty->assign('user_ip', $user['ip']);
            $smarty->assign('user_website', $user['website']);
            $smarty->assign('user_admin', $user['admin']);
            $smarty->assign('notice', '<div class="notice good">User Updated!<br /><a href="index.php?id=users">Go back</a></div>');
        } else {
            //Error
            $smarty->assign('notice', '<div class="notice bad">Error! Please try again.</div>');
        }
    } else {
        $smarty->assign('notice', '<div class="notice info">Please Fill in the above to update the user\'s info.</div>');
    }
}

/* Ban or Unban User */
if(isset($_GET['ban'])){
    $userid = $_GET['ban'];
    $stat   = $_GET['status'];
    if($_GET['status'] == "banned"){
        $query="UPDATE phpdir_users SET isbanned='No' WHERE id='".$_GET['ban']."'";
        if(!mysql_query($query)){
            echo mysql_error();
        }
    }
    if($_GET['status'] == "notbanned"){
        $query="UPDATE phpdir_users SET isbanned='Yes' WHERE id='".$_GET['ban']."'";
        if(!mysql_query($query)){
            echo mysql_error();
        }
    }
    echo '<meta http-equiv="Refresh" content="0; url=index.php?id=users" />';
}

/* Create User */
if(isset($_GET['create'])) {
    if(isset($_GET['action'])) {
        $status = $_GET['action'];
    } else {
        $status = null;
    }
    if(isset($_POST['submituser'])) {
        if(!empty($_POST["register_user_username"])) {
            /* Safe MySql Insert */
            $register_user_username = mysql_real_escape_string($_POST["register_user_username"]);
            /* Check for same username */
            $usernamecheckquery = mysql_query("SELECT * FROM phpdir_users WHERE username='$register_user_username'");
            $usernamecheckcount = mysql_num_rows($usernamecheckquery);
            /* Finish Check */
            if($usernamecheckcount != 0) {
                $error['1'] = "Username already exist";
            } else {
                $register_user_username = $_POST["register_user_username"];
            }
        } else {
            $error['1'] = "Username";
        }
        if(!empty($_POST["register_user_email"])) {
            $register_user_email = $_POST["register_user_email"];
        } else {
            $error['2'] = "E-Mail";
        }
        if(!empty($_POST["register_user_password1"]) && !empty($_POST["register_user_password2"])) {
            if($_POST["register_user_password1"] == $_POST["register_user_password2"]) {
                $register_user_password = $_POST["register_user_password1"];
            } else {
                $error['4'] = "Passwords do not match.";
            }
        } else {
            $error['3'] = "Password can not be empty.";
        }
        if(isset($_POST["register_user_admin"])) {
            $register_user_admin = $_POST["register_user_admin"];
        } else {
            $register_user_admin = '0';
        }
        if(empty($error)) {
            $register_user_username = mysql_real_escape_string($register_user_username);
            $register_user_password = mysql_real_escape_string($register_user_password);
            $register_user_email    = mysql_real_escape_string($register_user_email);
            $register_user_admin    = mysql_real_escape_string($register_user_admin);
           
            mysql_query("INSERT INTO phpdir_users(username, password, email, registerdate, admin, active) VALUES ('$register_user_username', '".md5($register_user_password)."', '$register_user_email', CURDATE(), '$register_user_admin', '1')") or die(mysql_error());
            $smarty->assign('notice', '<div class="notice good">User was create!<br /><a href="index.php?id=users">Go back</a></div>');
        } else {
            if(isset($error['1'])) { $smarty->assign('notice_username', '<div class="notice bad">' . $error['1'] . '</div>'); }
            if(isset($error['2'])) { $smarty->assign('notice_email', '<div class="notice bad">' . $error['2'] . '</div>'); }
            if(isset($error['3'])) { $smarty->assign('notice_passempty', '<div class="notice bad">' . $error['3'] . '</div>'); }
            if(isset($error['4'])) { $smarty->assign('notice_passmatch', '<div class="notice bad">' . $error['4'] . '</div>'); }
        }
        /* Field After Submit  */
       
    } else {
        /* Standered Field  */
        $smarty->assign('notice', '<div class="notice info">Please fill in the above info.</div>');
    }
}
/* Display Template */
$smarty->display('users.tpl');
?>





user.tpl line 118 {{$spam}}

Code:



{{include file="header.tpl" title=Users}}
<h1>Users</h1>
<ul class="user-manage">
    <li><a href="index.php?id=users" class="button">User List</a></li>
    <li><a href="index.php?id=users&amp;create" class="button">Create User</a></li>
</ul>
<div class="clearer"> </div>
{{if isset($smarty.get.userupdate)}}
<form name="form1" method="post" action="index.php?id=users&amp;userupdate={{$user_id}}&amp;status=done">
    <table>

        <tr>
            <td>Userame: </td>
            <td><input name="username" type="text" id="username"  size="50" value="{{$user_username}}" /></td>
        </tr>
        <tr>
            <td>E-Mail: </td>
            <td><input name="email" type="text" id="email" size="50" value="{{$user_email}}" /></td>
        </tr>
            <tr>
            <td>IP: </td>
            <td><input name="ip" type="text" id="ip" size="50" value="{{$user_ip}}" /></td>
        </tr>
    <tr>
            <td>Website: </td>
            <td><input name="website" type="text" id="website" size="50" value="{{$user_website}}" /></td>
        </tr>


<tr>
            <td>Member Status: </td>
            <td>
                <select name="admin">
                    <option value="0"{{if $user_admin == "0"}} selected="selected"{{else}}{{/if}}>Member</option>
                    <option value="1"{{if $user_admin == "1"}} selected="selected"{{else}}{{/if}}>Admin</option>
                </select>
            </td>
        </tr>
    </table>
    <!--input name="id" type="hidden" id="id" value="{{$user_id}}" /-->
    <input name="done" type="hidden" id="done" value="done" />
    <input type="submit" name="Submit" value="Submit" />
</form>
{{$notice}}
{{elseif isset($smarty.get.create)}}

<form name="submituser" action="index.php?id=users&amp;create" method="post" >
    <table>
        <tr>
            <td><label>Username</label></td>
            <td>{{if isset($smarty.post.register_user_username)}}
                <input name="register_user_username" type="text" id="register_user_username" value="{{$smarty.post.register_user_username}}" />
                {{else}}
                <input name="register_user_username" type="text" id="register_user_username" />
                {{/if}}</td>
        </tr>
        <tr>
            <td><label>E-Mail</label></td>
            <td>{{if isset($smarty.post.register_user_email)}}
                <input name="register_user_email" type="text" id="register_user_email" value="{{$smarty.post.register_user_email}}" />
                {{else}}
                <input name="register_user_email" type="text" id="register_user_email" />
                {{/if}}</td>
        </tr>
        <tr>
            <td><label>Password</label></td>
            <td><input name="register_user_password1" type="password" /></td>
        </tr>
        <tr>
            <td><label>Password Again</label></td>
            <td><input name="register_user_password2" type="password" /></td>
        </tr>
        <tr>
            <td><label>Admin Access</label></td>
            <td>{{if isset($smarty.post.register_user_admin)}}
                <input type="checkbox" name="register_user_admin" value="1" checked="checked" />
                {{else}}
                <input type="checkbox" name="register_user_admin" value="1" />
                {{/if}}</td>
        </tr>
    </table>
    <input name="submituser" type="hidden" />
    <input name="submit" type="submit" value="Register" />
</form>
<div class="clearer"> </div>
{{$notice}}
{{$notice_username}}
{{$notice_email}}
{{$notice_passempty}}
{{$notice_passmatch}}

{{else}}
<div class="media_paginate_prev">{{paginate_prev}}</div> <div class="media_paginate_middle">{{paginate_middle}}</div> <div class="media_paginate_next">{{paginate_next}}</div>
<div class="clearer"> </div>
<table class="userdata">
    <tr>
        <th>ID</th>
        <th>Report Spammer</th>
        <th>Username</th>
        <th>E-Mail</th>
        <th>IP</th>
        <th>Register Date</th>
        <th>Website</th>
        <th>Status</th>
        <th>Update</th>
        <th>Delete</th>
        <th>Ban Status</th>
    </tr>
    {{section name=userdata loop=$userdata}}
    <tr>
   
<td>{{$userdata[userdata].id}}</td>
<td><A HREF="http://www.stopforumspam.com/add.php?username={{$userdata[userdata].username}}&ip_addr={{$userdata[userdata].ip}}&email={{$userdata[userdata].email}}&api_key=&apikey">
<img src="{{$url}}/assets/templates/default/admin/images/sfs.png"><b><font color=red> Report to StopForumSpam </font></b> </A>



{{$spam}}


</td>
        <td>{{$userdata[userdata].username}}</td>
        <td><pre style='width: 180px;'>{{$userdata[userdata].email}}</pre></td>
        <td>{{$userdata[userdata].ip}}</td>
        <td>{{$userdata[userdata].registerdate}}</td>
        <td><pre style='width: 180px;'>{{$userdata[userdata].website}}</pre></td>
<td>{{if $userdata[userdata].admin == "0"}}Member{{elseif $userdata[userdata].admin == "1"}}Admin{{else}}Undefined{{/if}}</td>
        <td><a href="index.php?id=users&amp;userupdate={{$userdata[userdata].id}}">Update</a></td>
        <td><a href="index.php?id=users&amp;userdelete={{$userdata[userdata].id}}" onclick="return confirm('Are you sure you want to delete delete the user {{$userdata[userdata].username}}?')">Delete</a></td>
        <td>
        {{if $userdata[userdata].isbanned == "Yes"}}
            Banned     <a href="index.php?id=users&amp;ban={{$userdata[userdata].id}}&amp;status=banned">[Unban user]</a>
        {{elseif $userdata[userdata].isbanned == "No"}}
            Not Banned <a href="index.php?id=users&amp;ban={{$userdata[userdata].id}}&amp;status=notbanned">[Ban user]</a>
        {{else}}
            Undefined
        {{/if}}
        </td>


</tr>
    {{sectionelse}}
    <tr>   
        <td colspan="7">No Media Results</td>
    </tr>
    {{/section}}
</table>
<div class="clearer"> </div>
<div class="media_paginate_prev">{{paginate_prev}}</div> <div class="media_paginate_middle">{{paginate_middle}}</div> <div class="media_paginate_next">{{paginate_next}}</div>
{{/if}}
{{include file="footer.tpl"}}






thanks for any help
_________________
winracer
http://helpmewithperl.com
http://myfunnypets.com
Back to top
View user's profile Send private message
mohrt
Administrator


Joined: 16 Apr 2003
Posts: 7036
Location: Lincoln Nebraska, USA

PostPosted: Sat Mar 24, 2012 5:27 pm    Post subject: Reply with quote

You can get the remote address with $_SERVER['REMOTE_ADDR'] so instead of:

$addr = $userrow['ip'];

use:

$addr = $_SERVER['REMOTE_ADDR'];
Back to top
View user's profile Send private message Visit poster's website
winracer
Smarty Rookie


Joined: 15 Dec 2009
Posts: 12

PostPosted: Sun Mar 25, 2012 1:10 am    Post subject: Reply with quote

mohrt wrote:
You can get the remote address with $_SERVER['REMOTE_ADDR'] so instead of:

$addr = $userrow['ip'];

use:

$addr = $_SERVER['REMOTE_ADDR'];


thanks but I need the $addr = $userrow['ip'];
because I want to pull address from the sql database.
this will be used if a user gets past the register part and I do use the $addr = $_SERVER['REMOTE_ADDR']; in that part.

if a use does get past the regiater then I can find out if they are a spammer if so I can submit them to the database. also I can view they has been tag as a spammer.

do you know how I can fix my code to make this work, I need the $addr = $userrow['ip']; to be in the array or the $spam part to be in the array after the php check for spammer or not? I hope this makes sense. please let me know if you need more detail.

again thanks for your help
_________________
winracer
http://helpmewithperl.com
http://myfunnypets.com
Back to top
View user's profile Send private message
mohrt
Administrator


Joined: 16 Apr 2003
Posts: 7036
Location: Lincoln Nebraska, USA

PostPosted: Mon Mar 26, 2012 2:18 pm    Post subject: Reply with quote

If you are getting the same IP address for every user, then there is something wrong with $userrow['ip'], or how you query for it. I'd start there. That is why I suggested $_SERVER['REMOTE_ADDR'], that will always be the current client ip address.
Back to top
View user's profile Send private message Visit poster's website
winracer
Smarty Rookie


Joined: 15 Dec 2009
Posts: 12

PostPosted: Mon Mar 26, 2012 4:35 pm    Post subject: Reply with quote

mohrt wrote:
If you are getting the same IP address for every user, then there is something wrong with $userrow['ip'], or how you query for it. I'd start there. That is why I suggested $_SERVER['REMOTE_ADDR'], that will always be the current client ip address.



I am getting the same IP address for {{SPAM}}

{{$userdata[userdata].ip}} it is right, it show the IP address right.

can you use {{$userdata[userdata].ip}} inside the tpl using {{php}} {{/php}}

I tried but can't get it to work.


the problem is here some where

Code:

/* List Users */
/* Grab Results from DB */     
$userquery  = sprintf("SELECT SQL_CALC_FOUND_ROWS * FROM phpdir_users ORDER BY id DESC LIMIT %d,%d", SmartyPaginate::getCurrentIndex(), SmartyPaginate::getLimit());
$userresult = mysql_query($userquery) or die("MySql Error: ".mysql_error());
/* Display via Array */
$userdata = array();
$data = array($userrow['ip']);
$i=0;
/* Create While to make array */
while ($userrow = mysql_fetch_array($userresult)) {
    $usertmp = array(
        "id" => $userrow['id'],
        "username" => $userrow['username'],
        "email" => $userrow['email'],
        "ip" => $userrow['ip'],
        "registerdate" => $userrow['registerdate'],
        "website" => $userrow['website'],
        "admin" => $userrow['admin'],
        "isbanned" => $userrow['isbanned'],
   
);

// Start spam checker http://www.stopforumspam.com
$addr = $userrow['ip'];
$response = file_get_contents('http://www.stopforumspam.com/api?ip='.$addr);
$pattern = '/<appears>yes<\/appears>/';
$pattern1 = '/<appears>no<\/appears>/';
if (preg_match($pattern, $response)) {
//require_once( './stopspammer.html' );
//exit();
$spam = "$addr<br> Spammer";
    $smarty->assign('spam', $spam);

}
if (preg_match($pattern1, $response)) {
//require_once( './stopspammer.html' );
//exit();
$spam = "$addr<br> NO-Spammer";
    $smarty->assign('spam', $spam);
}


// end spam checker http://www.stopforumspam.com






    /* Tell Data is equal to Temp */
    $userdata[$i++] = $usertmp;

}





/* Set Smarty URL */
SmartyPaginate::setURL('index.php?id=users');

/* Calculate Total Rows */
$usertotalquery = mysql_query("SELECT COUNT(*) FROM phpdir_users");
$usertotal = mysql_fetch_array($usertotalquery);
SmartyPaginate::setTotal($usertotal[0]);

/* Assign Var */
$smarty->assign('userdata', $userdata);






some how I need to make $spam part of the array like {{$userdata[userdata].spam}}


but can't find out how to do it.


again thanks for your help.
_________________
winracer
http://helpmewithperl.com
http://myfunnypets.com
Back to top
View user's profile Send private message
winracer
Smarty Rookie


Joined: 15 Dec 2009
Posts: 12

PostPosted: Wed Mar 28, 2012 5:40 pm    Post subject: Reply with quote

Thanks mohrt for your help

working great!

I used below in php

Code:

// Start spam checker http://www.stopforumspam.com
$addr = $userrow['ip'];
$response = file_get_contents('http://www.stopforumspam.com/api?ip='.$addr);
$pattern = '/<appears>yes<\/appears>/';
$pattern1 = '/<appears>no<\/appears>/';
if (preg_match($pattern, $response)) {

$spam = "$addr<br> Spammer";

$usertmp['spam'] = $spam;


}
if (preg_match($pattern1, $response)) {

$spam = "$addr<br> NO-Spammer";

$usertmp['spam'] = $spam;
}





and below in tpl


{{$userdata[userdata].spam}}
_________________
winracer
http://helpmewithperl.com
http://myfunnypets.com
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Smarty Forum Index -> General All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP